2011-03-14 4 views
2

나는 사용자 이름을 알고있는 사용자를 수동으로 승인하려고합니다. 그러나이 계정에는 암호가 없습니다. 다른 테이블의 Twitter 계정에 연결되어 생성 된 계정입니다. 올바른 트위터 계정이 로그인을 시도하고 있음을 확인할 수는 있지만 인증 구성 요소를 사용하여이 트위터 계정에 연결된 사용자를 인증 할 수 있어야합니다.수동으로 CakePHP에서 사용자 인증

트위터 계정에 연결된 모든 계정은 암호없이 동일한 방식으로 만들어집니다. 나중에이를 개선하기 위해 변경 작업을 수행 할 예정이므로 일반 암호는 실행 가능한 옵션이 아니므로 users 테이블의 암호 필드에 무엇이 있는지 여부에 관계없이 사용자를 인증해야합니다.

+0

나는 이것이 오래된 질문이라는 것을 알고 있지만, 여전히 문제가있다. 최종 결과는 id, 해시 된 암호 및 이름을 포함하는 배열을 보내는 것입니다. 이름을 전달하지 못하면 이름이없는 사용자로 로그인하게됩니다. 암호를 보내지 못하면 경고 메시지가 나타납니다. –

답변

7

"인증"이란 "인증"또는 "로그인"을 의미합니다. 즉 Auth::login()에 사용자 레코드의 기본 ID를 전달하는 것처럼 간단합니다

$this->Auth->login(array('id' =>$user['User']['id'])); 

을 :

$user = $this->User->find('first', array('conditions' => array('twitter_id' => ...))); 
$this->Auth->login($user['User']['id']); 
+0

환상적! 매력처럼 일했습니다. 감사합니다 : D – paradox870

+0

위의 솔루션을 시도한 응용 프로그램에 로그인하는 것,하지만 함께 가져올 수 없습니다. $ this-> Auth-> user(); 은 (는) role, username, id와 같습니다. 다음 오류가 발생합니다 인수 1이 Hash :: get()에 전달되면 배열 668의 /home/xyzz/public_html/Lib/Cake/Controller/Component/AuthComponent.php에 지정된 배열 유형 문자열이어야합니다. 스택 추적마다 $ this-> Auth-> user ('role')를 호출하는 위치를 트리거합니다. –

1
$this->Auth->login($user['User']['id']); 
$this->Auth->login($user['User']['username']); 
$this->Auth->login($user['User']['password']); // hashed password 
3

케이크는 2.3 + 분명히 제대로 작동하기 위해 배열 수 있도록이 필요 id를 단일 정수로 전달하는 것만으로는 작동하지 않았습니다.

+2

사실, 평면 배열 인'$ this-> Auth-> login ($ user [ 'User']);'그렇지 않으면 역할, 사용자 이름 등등과 같이 중요 할 수있는 다른 정보를 잊어 버리고 누락하고 있습니다. – mark