2013-10-22 9 views
5

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

मैंने डेटाबेस में सत्रों को संग्रहीत करने के लिए सत्र ड्राइवर का उपयोग करने और प्रत्येक उपयोगकर्ता नाम के लिए कुंजी को स्थिर बनाने का विचार किया है। यह सत्र निर्धारण के कारण शायद एक भयानक कार्यान्वयन है।

कार्यान्वयन क्या होगा? मुझे ऑथ ड्राइवर में कौन सी विधियां संपादित करनी चाहिए? आम सत्र कुंजी कहाँ संग्रहित की जाएगी?

उत्तर

13

मैंने हाल ही में यह किया था।

मेरे समाधान जब। में एक उपयोगकर्ता के लॉग तो मैं एक छोटे से वर्ग की जाँच करता है, तो सत्र ID संग्रहीत वर्तमान उपयोगकर्ता के लिए जो प्रवेश होने के रूप में ही है था सत्र मान सेट किया गया था।

तो उपयोगकर्ता के लॉग कहीं और से डीबी में सत्र आईडी अपडेट हो जाएगी और "पुराना" उपयोगकर्ता लॉग आउट हो जाएगा।

मैं तो प्रवेश सफल हुआ प्रमाणीकरण ड्राइवर या कुछ भी बदल नहीं किया था, सिर्फ शीर्ष पर डाल दिया जब में उपयोगकर्ता के लॉग नीचे होता है:।

$user->last_session = session_id(); 
$user->save(); 

यह जांचने के लिए सत्र वैध मैं नीचे प्रयोग किया जाता है

if(session_id() != Auth::user()->last_session){ 
    Auth::logout(); 
    return true; 
} 

आप देख सकते हैं मैं उन तालिका में किसी स्तंभ जोड़ा last_session

+0

बुलाया मैं तुम्हें डाल "जाँच करता है, तो सत्र मान्य है" एक प्रमाणीकरण फिल्टर में भाग अनुमान लगा रहा हूँ? धन्यवाद, मैं ऑथ ड्राइवर में उलझ गया था, लेकिन यह बहुत आसान है। –

+0

@ जोसेफस्ज़िमबोर्स्की हां। कभी-कभी आपको सही दिशा में धक्का चाहिए। मैंने वास्तव में एक नई कक्षा बनाई है जो जांचता है कि सत्र मान्य है या नहीं। प्रत्येक बार उपयोगकर्ता मार्ग/फिल्टर के समूह पर जाता है जिसके लिए कक्षा में लॉग की आवश्यकता होती है। –

+0

लार्वेल सत्र आईडी प्राप्त करना लार्वेल 4 में इस तरह से किया जा सकता है। लैरवेल 3 ($ _COOKIE ["laravel_session"]) और Laravel> = 4.1 (सत्र :: getId()) के लिए एक और तरीका है। क्रेडिट्स http://stackoverflow.com/questions/16812747/how-can-i-get-the- सत्र-id-in-laravel – Jos

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