2013-08-06 9 views
12

मैं लैरवेल के लिए बिल्कुल नया हूं और मुझे याद रखने के बारे में एक सवाल था।लार्वेल 4 मुझे याद रखें समय समाप्त हो गया है

मैंने सफलतापूर्वक Auth :: प्रयास विधि को दूसरे तर्क को जोड़कर "मुझे याद रखें" फ़ंक्शन को सफलतापूर्वक सक्षम किया है।

if (Auth::attempt(array('email' => $email, 'password' => $password), true)) 
{ 
    // The user is being remembered... 
} 

जैसा कि प्रलेखन में उल्लेख किया गया है, यह मुझे अनिश्चित काल तक याद करता है या जब तक कोई उपयोगकर्ता मैन्युअल रूप से लॉग आउट नहीं करता है।

मैं अनिवार्य रूप से "मुझे याद रखें" फ़ंक्शन पर एक समाप्ति तिथि निर्धारित करना चाहता हूं।

कंसोल को देखते हुए, मैं देख सकता हूं कि "मुझे याद रखें" सक्षम करने से याद रखने वाला एक {_HASH} कुकी उत्पन्न करता है।

भविष्य में एक सप्ताह कहने के लिए इस कुकी में निर्दिष्ट समाप्ति तिथि को ओवरराइट करने का सबसे अच्छा तरीका क्या होगा? कुकी वर्तमान में अतीत में तारीख सेट करती है, जो इसे हमेशा के लिए बना देती है।

ध्यान रखें कि मुझे session.php में 'जीवनकाल' => 0 सेट करना था ताकि मैं उपयोगकर्ता वरीयता के आधार पर मुझे याद रखने के लिए ट्रिगर को ट्रिगर कर सकूं ताकि इसे एक सप्ताह में बदलना मेरे मामले में काम नहीं करेगा।

धन्यवाद!

+4

लार्वाल समाप्ति समय ** + 5years ** सेट करता है। नहीं, आप तब तक नहीं कर सकते जब तक कि आप कोर को नहीं बदलते, क्योंकि 'Auth :: try() 'कुकी और समाप्ति समय को स्टोर करने के लिए' कुकी :: हमेशा के लिए) विधि का उपयोग करता है ** हार्ड कोडित ** इसमें है .. इसलिए समाप्ति समय निर्धारित करने के लिए आपको लैरावेल कोर पर हाथ रखना होगा। –

+0

मेरा मानना ​​है कि आप अपना खुद का पैकेज बना सकते हैं और लैरवेल के साथ बंडल किए गए 'औथ' पैकेज के स्थान पर इसका उपयोग कर सकते हैं। हालांकि यदि आप लार्वेल के लिए नए हैं तो यह उपयुक्त नहीं हो सकता है। – Cristian

उत्तर

15

मुझे नहीं पता कि यह करने का अच्छा तरीका है या नहीं, लेकिन यदि आप मुझे याद रखने के लिए समाप्ति समय निर्धारित करने के लिए बेताब हैं तो आप इसे आजमा सकते हैं, यह मेरे लिए काम करता है।

laravel के Auth::atempt($credential,true) अपनी सामान्य व्यापार, यानी करते हैं, 5 साल करने के लिए मुझे याद समाप्ति समय सेट

हम App::after() विधि में बदल जाएगा, इसलिए आपकी filters.php फ़ाइल में App::after() विधि खोजने के लिए और कुकी बदल समाप्ति समय

App::after(function($request, $response) 
{ 
    if (Auth::check()){ 
     $ckname=Auth::getRecallerName(); //Get the name of the cookie, where remember me expiration time is stored 
     $ckval=Cookie::get($ckname); //Get the value of the cookie 
     return $response->withCookie(Cookie::make($ckname,$ckval,360)); //change the expiration time 
    } 
}); 

नोट: Cookie::make('name','value','expiration time');

+0

उत्तर के लिए धन्यवाद! यह बहुत अच्छा काम करता है और मैं कोर फाइलों को संपादित करने के बजाय ऐसा करता हूं। –

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