2013-01-31 12 views
10

के साथ ओथ को कार्यान्वित करने के तरीके को कैसे खोजा जा रहा है और कोशिश करने के बहुत सारे होने के बाद मैं फाइनलली ने लोगों को पंजीकरण करने और अपनी साइट पर लॉगिन करने और उन्हें भूमिका देने और प्राधिकरण करने के तरीके के बारे में बताया। मैं विस्तारित मेमर्सशिपप्रोवाइडर और रोलप्रोवाइडर वर्ग से वंचित हूं, दोनों ने उनके लिए एक कस्टम क्लास बनाया है, लेकिन अब मुझे अभी भी ओथ को काम करने के लिए समस्याएं हैं (मुख्य रूप से ओपनआईडी)। मैं authconfig में GoogleClient पंजीकृत, लेकिन एक बार मैं प्रवेश करने की कोशिश करते हैं और यह लाइन (AccountController.cs में) करने के लिए आता है:एएसपी.नेट एमवीसी 4 कस्टम सदस्यताप्रोवाइडर और रोलप्रोवाइडर

if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false)) 

तो यह अभी तक लागू नहीं कहते हैं, अब मैं विस्तारित सदस्यता की जाँच की और मैं ओवरराइड टी कर सकते हैं लॉगिन (क्योंकि यह वहां नहीं है, लेकिन यह कहां है)। मैंने Google को बहुत भी खोजा लेकिन कोई किस्मत नहीं, काम करने के लिए ओथ प्राप्त करने के लिए कोई निर्देश पसीना होगा (मुझे लगता है कि मुझे 3 वें कस्टमऑथप्रोवाइडर बनाना है, लेकिन मैं यह नहीं ढूंढ पा रहा हूं कि विरासत से क्या प्राप्त करना है)!

पीएस: मैंने कस्टममेम्बरशिपप्रोवाडर और कस्टम्रोलप्रोवाइडर बनाया क्योंकि मैं एक अलग डेटाबेस योजना का उपयोग करना चाहता हूं।

मैक्सिम

उत्तर

11

मैं memberbershipprovider

public override void CreateOrUpdateOAuthAccount(string provider, string providerUserId, string userName) 

public override int GetUserIdFromOAuth(string provider, string providerUserId) 
//return -1 if User got no OauthAccount 

public override string GetUserNameFromId(int userId) 

अब यह काम कर रहा है अपने कस्टम में 3 और अधिक तरीकों को ओवरराइड करने के लिए किया था। (मैंने सदस्यता प्रदाता में सभी विधियों को ओवरराइड करके इसे बाहर निकाला, और फिर प्रत्येक पर ब्रेकपॉइंट सेट किया, और हर जगह यह मेरे कस्टम डेटाबेस के आधार पर विधि में भर गया।

+1

वाह, जिसने मुझे बहुत दर्द बचाया। धन्यवाद! – Kieron

+0

मुझे एक ही समस्या है, लेकिन यह नहीं समझता कि OAuthWebSecurity को कॉन्फ़िगर कैसे करें, क्या आप कोई मैनुअल या अन्य साझा कर सकते हैं? – BorHunter

3

यह एक टिप्पणी है कि अगर मैं टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा था होगा।

यह आपके परिदृश्य में OAuth काम करने के लिए कैसे नहीं है, लेकिन मामले में यह मदद करता है, OAuthWebSecurity.Login के लिए स्रोत http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/Microsoft.Web.WebPages.OAuth/OAuthWebSecurity.cs पर है और देखने के लिए कैसे SimpleMembership OAuth आप http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/5cb74eb3b2f3#src/WebMatrix.WebData/SimpleMembershipProvider.cs देख सकते हैं लागू किया।

आपकी परियोजना अच्छी, अच्छी किस्मत लगता है।

+0

मदद के लिए धन्यवाद, लेकिन बात यह है कि मेरे सदस्यताप्रोवाइडर में 3 और तरीकों को ओवरराइड करके यह सब ठीक हो गया। – Maximc

संबंधित मुद्दे