2011-10-26 13 views
7

मुझे ऑथलॉगिक का उपयोग करके एकल एक्सेस टोकन प्रमाणीकरण को सक्षम करने के तरीके पर एक सरल ट्यूटोरियल खोजने में कठिनाई हो रही है। कुछ दस्तावेज हैं लेकिन यह बहुत उपयोगी नहीं है। मेरी सत्र वर्ग के लिएऑथलॉगिक और सिंगल एक्सेस टोकन

single_access_allowed_request_types :any 

:

मैं अपने डाटाबेस के लिए single_access_token कहा, मैं इस गयी। लेकिन मुझे अभी भी यह समझ में नहीं आता कि प्रत्येक कॉल पर पारित होने वाले प्रमाण-पत्र परम का उपयोग करके उपयोगकर्ता को प्रमाणीकृत कैसे किया जाता है। फ़िल्टर से पहले मेरी आवश्यकता_ प्रमाणीकरण वर्तमान_यूसर के लिए मानक जांच करता है:

def current_session 
    return @current_session if @current_session 
    @current_session = Session.find 
    end 

    def current_user 
    @current_user = current_session && current_session.record 
    end 

लेकिन क्या यह काम करने के लिए पर्याप्त है? सत्र है। उपयोगकर्ता को लॉग इन करने के लिए जादू करने का तरीका मेरे पैरा पर आधारित है या क्या मुझे अलग-अलग विधि बनाना है जो वास्तव में जांचता है कि उपयोगकर्ता_credentials param वहां है और उसके बाद उपयोगकर्ता को उस पर आधारित है और फिर उस उपयोगकर्ता को लॉग इन करें। मैं उलझन में हूं कि अगर मैं वास्तव में एक एसएटी का उपयोग करता हूं तो मैं वास्तव में एक नया सत्र "बना रहा हूं" या अगर मैं एपीआई कॉल किए जाने पर हर बार पहले फ़िल्टर में मौजूदा उपयोगकर्ता को सेट कर रहा हूं।

कोई भी मदद अद्भुत होगी! धन्यवाद!

उत्तर

2

मैंने authlogic के साथ एक एकल_एसीएसी_टोकन समाधान लागू किया और मुझे क्या करना था single_access_allowed_request_types :all उपयोगकर्ता सत्र मॉडल में जोड़ा गया था।

फिर मैंने नियंत्रक को निम्नलिखित जोड़ा जहां मैं एकल_access_token प्रमाणीकरण की अनुमति देना चाहता था।

def single_access_allowed? 
     ["some_action_1","some_action_2","some_action_3"].include?(action_name) 
    end 

ऐसा लगता है कि आप नियंत्रक कोड खो रहे हैं। तो यदि आपके पास दो क्रियाएं "get_user_info" और "update_user_info" हैं जो आप जोड़ देंगे।

def single_access_allowed? 
     ["get_user_info","update_user_info"].include?(action_name) 
    end 
+0

डैनियल, क्या यह काम किया?अगर मुझे नहीं पता कि आप किन मुद्दों का सामना कर रहे हैं और मैं मदद करने की कोशिश करूंगा। धन्यवाद! –

3

केवल एक चीज मैं था बनाने के करने के लिए इस काम था

  • एक क्षेत्र मेरे लिए single_access_token कहा जाता है उन-तालिका जोड़ने
  • एक विधि प्रत्येक नियंत्रक जहां एकल पहुँच होना चाहिए करने के लिए कहा जाता है single_access_allowed? जोड़ने की अनुमति दी।

इस विधि इस प्रकार दिखाई देगा:

# method for authlogic: defines for which action the single-access-token can be used 
def single_access_allowed? 
    (action_name == "deliver") || (action_name == "delivery_status") 
end 

मैं UserSessionsController या UserSession वस्तु में कुछ भी जोड़ने की जरूरत नहीं है। Authlogic आपके लिए हैडल करता है। एकल-पहुंच-टोकन के साथ केवल एक अनुरोध प्रमाणीकृत है, इसलिए एक सतत सत्र नहीं है। प्रत्येक अनुरोध को एकल-पहुंच-टोकन भेजना होता है। इसलिए नाम: एक एक्सेस प्राप्त करने के लिए टोकन :)

आशा है कि इससे मदद मिलती है।

0

ऑथलॉगिक का स्रोत कोड एकल एक्सेस टोकन पर सबसे अच्छा प्रलेखन है। This is the specific section that discusses it

आपको नियंत्रक में single_access_allowed? नामक एक निजी विधि जोड़ने की आवश्यकता होगी जहां आप उपयोगकर्ताओं को एक्सेस करने का प्रयास कर रहे हैं। सिंगल एक्सेस टोकन को user_credentials नाम का उपयोग करके URL एन्कोडेड पैरामीटर के रूप में डिफ़ॉल्ट रूप से पास किया जाता है। तो इसमें लॉग इन किए बिना अपने कंट्रोलर को हिट करने के लिए /your_route/?user_credentials=xxxxxx