2011-04-13 5 views
22

Yii에서 OpenID 지원으로 게임하고 싶습니다.Yii에 대한 OpenId 지원

가능한 플러그인을 조사한 결과,이 두 가지를 발견했습니다. OpenidSelector에 대한 하나와 LightOpenId

http://www.yiiframework.com/extension/simpleopenidselector/

http://www.yiiframework.com/extension/loid

하나는 이러한 오픈 ID 지원을 위해 YII에서 사용할 수있는 권리 확장 있습니까? 다른 건 없니? 그리고 올바른 경우 이러한 확장 기능으로 수행 할 작업에 대한 지침을 얻고 싶습니다.

이것은 페이지의 지침에 따라 설치해야 할 필요가 있다고 생각합니다.

  1. 는 OpenIdUserIdentity가 CUserIdentity 확장 만들고있다
  2. 로그인 페이지 만들기 인증합니다() 코드를 삽입하고보기에서 simpleopenidselector 코드를 넣습니다. 내가 LOID에서 사용 샘플을 이해하지 않는 한

나는이 종류의 손실입니다 siteController에 actionOpenIdLogin의 methon을 작성하고 I (1)과 (3) 위의 할 방법을 모르겠습니다.

내가 올바른 길을 가고 있다면 가능한 안내를 해주세요. 감사.

+0

둘 다 사용해야합니까? – BlueDolphin

+0

예, 둘 다 사용하십시오. – Alocus

답변

10

잠시 놀아 본 후, 나는 내 자신의 질문에 대답 할 것입니다. 이것이 내가 작동하도록하는 방법입니다. 그래서 당신의 요구에 따라 변경할 수 있습니다.

참고 : siteController 대신 userController를 사용하고 해당 확장 페이지의 모든 지침을 따르십시오.

위의 두 가지 플러그인을 사용한 경우 다음 단계는 다음과 같습니다. (단계별 가이드) 하지만 가장 중요한 단계는 2c 및 3이며, 그들은 두 플러그인 모두에 대한 접착제입니다

1) OpenidSelector를 사용하는 로그인 페이지가 있어야합니다. views/user/login.php에 두십시오.

<?php 
$this->widget('application.extensions.openidProviders.openidProviders', 
array ('options' => array ('lang' => 'en', 
//  'demo' => 'js:true', 
    'cookie_expires' => 6*30, 
    )));?> 

2) openidSelector에서 선택 사항을 처리하는 설정 조치. 나는 이것을 userController에 넣었다.

a) 주 설정 파일에 있음. userController 파일에서

'components'=>array(
    'user'=>array(
     // enable cookie-based authentication 
     'allowAutoLogin'=>true, 
     'loginUrl' => array('/user/login'), //change the default login page 
    ), 

b)에 로그인을 추가 및 인증 작업을 1 actionLogin 코드 액션 #에 대한

array('allow', // allow all users to perform 'index' and 'view' actions 
    'actions'=>array('login', 'authenticate'), 

-이 로그인보기 페이지를 실행하는 것입니다. 액션 # 2 actionAuthenticate에 대한

public function actionLogin() 
{  
    // display the login form 
    $this->render('login',array()); 
} 

C) 코드 - LOID 명령 페이지에서 수정 된 코드는, 이것은 OpenIDProvider가 로그인 페이지에서 선택했을 때 처리하는 것입니다.

public function actionAuthenticate() 
{ 
    // Put the Simple usage: code on 
    // http://www.yiiframework.com/extension/loid here: 

    // Code from loid Simple usage page. 
    // START HERE 
    $loid = Yii::app()->loid->load(); 
    if (!empty($_GET['openid_mode'])) { 
     if ($_GET['openid_mode'] == 'cancel') { 
     $err = Yii::t('core', 'Authorization cancelled'); 
     } else { 
     try { 
      echo $loid->validate() ? 'Logged in.' : 'Failed'; 
     } catch (Exception $e) { 
      $err = Yii::t('core', $e->getMessage()); 
     } 
    } 
    if(!empty($err)) echo $err; 
    } else { 
     // **NOTE:Comment out this line from the loid sample page** 
     // $loid->identity = "http://my.openid.identifier"; //Setting identifier 
     // this openid_identifier is need after you click the openselector 
     $loid->identity = $_GET['openid_identifier']; // CHANGE HERE 

     $loid->required = array('namePerson/friendly', 'contact/email'); //Try to get info from openid provider 
     $loid->realm  = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']; 
     $loid->returnUrl = $loid->realm . $_SERVER['REQUEST_URI']; //getting return URL 
     if (empty($err)) { 
      try { 
       $url = $loid->authUrl(); 
       $this->redirect($url); 
      } catch (Exception $e) { 
       $err = Yii::t('core', $e->getMessage()); 
      } 
     } 
    } 
    // Code from loid Simple usage page. 
    // END HERE 
} 

3)

변경

form action="examples/consumer/try_auth.php" method="get" id="openid_form" 

form action="authenticate" method="get" id="openid_form" 

에 openidProviders/뷰/메인 en.php에서 인증하는 액션 URL 변경을해야한다고 . 실패 사례를 테스트하지 않았으며 Google 로그인으로 만 테스트했습니다.

+0

이 작업을 수행하기 위해 C 부분에서 수행 한 작업의 예를 게시 할 수 있습니까? "print 'Logged in"에서 무엇을해야하는지 확신 할 수 없습니다. ";" 부품. 다른 인증 메커니즘을 변경하기위한 문서에서는 UserIdentity 클래스 수정에 대해 설명합니다. 그러나이 확장은 그런 식으로 작동하지 않는 것 같습니다. 또는 여기에 코드를 게시하고 싶지 않은 경우 [email protected]에 글을 쓸 수 있습니까? 감사. – deltaray

+0

deltaray와 동일한 요청입니다. 감사합니다 – BlueDolphin

+0

샘플 코드와 함께, Google, 야후와 같은 id 공급자 목록을 볼 수 있지만 그 중 하나를 클릭하면 404 페이지를 찾을 수 없습니다. 이 URL은 다음과 같습니다. http : //testingenv.com/authenticate? action = verify & openid_identifier = http % 3A % 2F % 2Fme.yahoo.com % 2F 제안? – BlueDolphin

8

enter image description here

HybridAuth 라이브러리를 사용하게하는, 지금 YiiAuth있다.

+0

그냥 Yii 인증 도우미를 검색하고 이것을 발견했습니다. +1 정말 도움이 :) –