2011-08-12 12 views
6

के साथ उपयोगकर्ता को कैसे लॉगिन करूं मैंने अपने वाईआई वेब ऐप में simpleopenidselector और lightopenid जोड़ा है और यह उपयोगकर्ता को प्रमाणीकृत करता है और यह ओपनिड डेटा के साथ एक यूआरएल देता है। अगला चरण उपयोगकर्ता में लॉग इन करने के लिए 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/) इसमें ओपनिड शामिल है लेकिन मुझे पूरे उपयोगकर्ता प्रबंधन की आवश्यकता नहीं है, और मैं कर सकता हूं यह देखने के लिए पर्याप्त कोड का पालन न करें कि उन्होंने ओपनिड लॉगिन भाग को कैसे कार्यान्वित किया। मैंने अभी ओओपी शैली में कोडिंग शुरू कर दी है, जिससे यह भी कठिन हो रहा है। मैंने आपके द्वारा उल्लिखित yii-user लिंक में ओपनिड नहीं देखा। – Mark

उत्तर

1

ओपनआईडी से वाईआई लॉगिन के रूप में डेटा का उपयोग करने के लिए, आप UserIdentity क्लास (संरक्षित/घटक) को संशोधित/ओवरराइट कर सकते हैं।

मौजूदा प्रमाणीकरण विधि को ओवरराइट करें। आप भी वर्तमान Yii उपयोगकर्ता नाम, जैसे सेट कर सकते हैं इस बिंदु पर:

$this->username=$openId->username 

पक्ष/लॉगिन कार्रवाई ओवरराइट करके (जहां $openId->username चर जो OpenID उपभोक्ता नाम है द्वारा प्रतिस्थापित किया जाना चाहिए), , सुनिश्चित नहीं हैं कि अगर मैं आपकी समस्या को सही समझते हैं: (अपनी टिप्पणी की वजह से)

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

// अद्यतन: आप अपनी बदली विधि इस तरह, कॉल कर सकते हैं। लेकिन UserIdentity में एक नई विधि जोड़ने के बारे में क्या है, जैसे certicateOID()। विधि मूल प्रमाणित() की शुरुआत में इस विधि कॉल, इसलिए जैसे:

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

authenticateOID() अंदर आप अगर OID प्रमाणीकरण किया जाता है की जाँच करें और/या अगर अभी भी उपयोगकर्ता में आप स्थानीय "OID - उपयोगकर्ता तालिका"

+0

मैं वर्तमान प्रमाणीकरण को ओवरराइट या परिवर्तित नहीं करूंगा क्योंकि मुझे पंजीकृत उपयोगकर्ताओं और ओपनिड उपयोगकर्ताओं को लॉगिन करने की आवश्यकता है। मैंने UserIdentity को संशोधित करने का प्रयास किया है, लेकिन हमेशा उपयोगकर्ता नाम और पासवर्ड की आवश्यकता वाले मुद्दों में भाग लेता है, जब मेरे पास केवल ओपनिड से उपयोगकर्ता नाम होता है। मुझे यह जांचने की ज़रूरत है कि ओपनिड उपयोगकर्ता एक पंजीकृत उपयोगकर्ता है और साथ ही मेरे उपयोगकर्ता टेबल के विरुद्ध उपयोगकर्ता नाम की जांच कर रहा है। क्षमा करें अगर यह समझ में नहीं आता है ... मैं वाईआई और ओओपी के लिए नया हूं। – Mark

+0

@ मार्क मैंने अपनी पोस्ट अपडेट की है ... शायद यह मदद करता है? –

+0

प्रमाणीकरण भाग ठीक है, यह नया UserIdentity हिस्सा है जिसे मैं कसरत नहीं कर सकता। ओपनआईडी लॉगिन प्रमाणीकृत होने के बाद, मुझे इसे फिर से प्रमाणीकृत करने की आवश्यकता नहीं है, कम से कम यही मैं सोच रहा था। उपयोगकर्ता को ओपनआईडी के माध्यम से प्रमाणीकृत करने के बाद, मैं एक नया उपयोगकर्ता आईडी बनाना चाहता हूं, लेकिन वर्तमान वाईआई उपयोगकर्ता लॉगिन विधि में लॉग इन करते समय उपयोगकर्ता पासवर्ड की आवश्यकता होती है और ओपनआईडी ऐसा नहीं है जो मुझे लगता है कि मैं ऐसा नहीं कर सकता। – Mark