2011-04-13 22 views
22

के लिए ओपनआईडी समर्थन मैं वाईआई में ओपनआईडी समर्थन के साथ खेलना चाहता हूं।वाईआई

संभावित प्लगइन के लिए शोध करने के बाद, मुझे इन दोनों को मिला। OpenidSelector के लिए एक और LightOpenId

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

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

के लिए एक इन सही एक्सटेंशन OpenId समर्थन के लिए Yii में उपयोग करने के लिए कर रहे हैं? और कुछ? और यदि मैं सही हैं तो इन एक्सटेंशन के साथ क्या करना है, इसके बारे में कुछ गाइड लाइन प्राप्त करना चाहूंगा।

मुझे लगता है कि मुझे पृष्ठ पर निर्देशों के अनुसार उन्हें स्थापित करने के अलावा मुझे क्या करना है।

  1. OpenIdUserIdentity फैली CUserIdentity बनाएँ और वहाँ
  2. प्रमाणित() कोड डाल एक प्रवेश पृष्ठ बनाएं और ध्यान में रखते हुए simpleopenidselector कोड डाल दिया।
  3. siteController

तो मैं एक तरह से खो गया हूँ में एक actionOpenIdLogin Methon बनाएं जैसा कि मैंने Loid में प्रयोग नमूना समझ में नहीं आता है और मैं कैसे (1) और (3) ऊपर ऐसा करने के लिए यकीन नहीं है।

कृपया मुझे बताएं कि क्या मैं सही रास्ते पर हूं और संभवतः कुछ मार्गदर्शन प्रदान करता हूं। धन्यवाद।

+0

क्या आपको दोनों का उपयोग करने की आवश्यकता है? – BlueDolphin

+0

हां, उन दोनों का उपयोग करें – Alocus

उत्तर

10

थोड़ी देर के लिए इसके साथ खेलने के बाद, मैं अपने स्वयं के प्रश्न का उत्तर देने जा रहा हूं। इस तरह मैं इसे काम करने के लिए बनाता हूं, ताकि आप इसे अपनी आवश्यकताओं के अनुसार बदल सकें।

नोट: मैं साइट नियंत्रक के बजाय उपयोगकर्ता नियंत्रक का उपयोग करता हूं और कृपया संबंधित एक्सटेंशन पृष्ठ में सभी निर्देशों का पालन करें।

आप के रूप में ऊपर संकेत दो प्लग इन का उपयोग करते हैं, तो आप इसे काम करने के लिए अगले क्या करने की जरूरत निम्नलिखित हैं: लेकिन सबसे महत्वपूर्ण कदम 2c कर रहे हैं और 3 (इस कदम गाइड द्वारा एक कदम है), वे दोनों प्लगइन्स के लिए गोंद हैं

1) एक लॉगिन पृष्ठ है जो OpenidSelector का उपयोग करता है। इसे दृश्य/उपयोगकर्ता/login.php

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

2) ओपनिड चयनकर्ता से चयन को संभालने के लिए सेटअप क्रियाएं रखें। मैंने इसे उपयोगकर्ता नियंत्रक में रखा है।

ए) मुख्य कॉन्फ़िगरेशन फ़ाइल में।

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

ख) userController फ़ाइल में, लॉगिन जोड़ सकते हैं और प्रमाणित कार्यों

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

कार्रवाई # के लिए कोड 1 actionLogin - इस लॉगिन दृश्य पेज को गति प्रदान करने के लिए है।

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

ग) कोड कार्रवाई # 2 actionAuthenticate के लिए - 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

क्या आप इस काम को करने के लिए भाग सी में आपने और क्या किया है इसका एक उदाहरण पोस्ट कर सकते हैं। मुझे यकीन नहीं है कि "प्रिंट 'लॉग इन में क्या किया जाना चाहिए।';" अंश। UserIdentity क्लास को संशोधित करने के बारे में अन्य प्रमाणीकरण तंत्र बदलने के लिए दस्तावेज़। लेकिन यह एक्सटेंशन इस तरह से काम नहीं कर रहा है। या यदि आप यहां अपना कोड पोस्ट नहीं करना चाहते हैं। क्या आप [email protected] पर लिख सकते हैं। धन्यवाद। – deltaray

+0

deltaray के रूप में एक ही अनुरोध। धन्यवाद – BlueDolphin

+0

आपके नमूना कोड के साथ जोड़ा गया, मुझे आईडी प्रदाता की एक सूची दिखाई देती है, जैसे कि google, याहू, लेकिन जब मैं उनमें से किसी पर क्लिक करता हूं, तो मुझे 404 पृष्ठ नहीं मिला है। यह यूआरएल है: http: //testingenv.com/authenticate? action = सत्यापित करें और openid_identifier = http% 3A% 2F% 2Fme.yahoo.com% 2F कोई सुझाव? – BlueDolphin

8

enter image description here

वहाँ YiiAuth अब जो HybridAuth पुस्तकालय का उपयोग करता है,।

+0

बस वाईआई प्रमाणीकरण सहायकों के लिए ब्राउज़ कर रहा है और इसे मिला। +1 क्योंकि यह वास्तव में मेरी मदद की :) –