2011-08-12 2 views
6

Yii 웹 앱에 simpleopenidselectorlightopenid을 추가하면 사용자를 인증하고 openid 데이터가있는 URL을 반환합니다. 다음 단계는 OpenID 공급자의 데이터를 사용하여 Yii에 새로운 아이디를 작성하여 사용자를 로그인하는 것입니다. 이게 Yii와 어떻게 이루어 집니까?Yii 및 OpenID를 사용하여 사용자를 로그인하는 방법

또한 openid를 저장하기 위해 openid 테이블을 만들어야하고 내 사용자 테이블에 사용자를 추가해야한다고 생각합니다. 사용자가 이미 계정을 가지고 있다면 여러 계정을 방지하기 위해 openid를 사용자 계정에 추가하십시오.

이 모든 것을 Yii와 함께 달성 한 사람이 있습니까? 그렇다면, 나는 그것이 성취 된 방법에 매우 흥미가있을 것이다.

+0

직접 사용하지는 않았지만 이것을 [yii-user] (http://www.yiiframework.com/extension/yii-user/) 확장자와 통합 할 수 있는지 궁금합니다. – ldg

+0

@ldg - [yii-user-management] (http://www.yiiframework.com/extension/yii-user-management/)에는 openid가 포함되어 있지만 전체 사용자 관리가 필요하지는 않습니다. 그들이 openid 로그인 부분을 어떻게 구현했는지보기에 충분히 코드를 따르지 마십시오. 방금 OOP 스타일로 코딩하기 시작 했으므로 너무 힘들어졌습니다. 내가 언급 한 yii 사용자 링크에서 openid를 보지 못했습니다. – Mark

답변

1

Yii 로그인으로 openID의 데이터를 사용하려면 UserIdentity 클래스 (protected/components)를 수정하거나 덮어 쓸 수 있습니다.

기존의 인증 방법을 덮어 씁니다. 이 시점에서 당신은 또한 같은 현재 YII 사용자 이름을 설정할 수 있습니다 :

측면/로그인 조치를 덮어 쓰기하여

($openId->username가 오픈 아이디 사용자 이름을 포함하는 변수로 교체해야합니다)

$this->username=$openId->username 

, 당신은 다음과 같이 수정 된 메소드를 호출 할 수 있습니다

$identity=new UserIdentity("m","m");//where m is dummy 
if($identity->authenticate()) { 
      Yii::app()->user->login($identity); 
[...] 
} 

// 업데이트 (때문에 의견의) : 확실하지, 내가 바로 당신의 문제를 이해합니다. 그러나 authenticateOID()처럼 UserIdentity에 새로운 메소드를 추가하는 것은 어떨까요? 과 같이, 원래 인증합니다() 메소드의 시작 부분에서이 메서드를 호출 : OID 인증이 완료되면 확인할

if ($this->authenticateOID) {/*set username & return true to end the method here*/} 
else {/*original authenticate method from Yii*/} 

authenticateOID() 내부 및/또는 경우에 여전히 한 사용자 로컬 "OID - 사용자 테이블"

+0

등록 된 사용자와 openid 사용자에 로그인해야하므로 현재 인증을 덮어 쓰거나 변경하지 않을 것입니다. UserIdentity를 수정하려했지만 openid의 사용자 이름 만있을 때 항상 사용자 이름과 암호가 필요한 문제가 발생합니다. openid 사용자가 내 사용자 테이블에 대해 사용자 이름을 검사하여 등록 된 사용자인지 확인해야합니다. 죄송합니다. 이해가되지 않는 경우 ... 저는 Yii와 OOP에 처음입니다. – Mark

+0

@ 마크 내 게시물을 업데이트했습니다. 아마도 도움이 될까요? –

+0

인증 부분은 괜찮습니다. 운동 할 수없는 새로운 UserIdentity 부분입니다. OpenID 로그인이 인증 된 후에는 다시 인증 할 필요가 없습니다. 적어도 내가 생각한 것입니다. 사용자가 OpenID를 통해 인증 된 후에는 새로운 UserIdentity를 만들고 싶습니다. 그러나 현재 Yii 사용자 로그인 방법은 로그인 할 때 사용자 암호가 필요하며 OpenID는 문제가되지 않습니다. – Mark

관련 문제