2015-06-22 5 views
6

में सत्र जारी नहीं है मैं एक परियोजना के लिए लुमेन (लार्वेल द्वारा) माइक्रो-फ्रेमवर्क का उपयोग कर रहा हूं, और मुझे सत्रों में कुछ परेशानी हो रही है। मैं अभी कार्यान्वयन का परीक्षण कर रहा हूं, लेकिन मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि जब मैं एक सत्र चर सेट करता हूं और फिर पृष्ठ को रीफ्रेश करता हूं, तो चर अब सेट नहीं होता है।लुमेन PHP फ्रेमवर्क

मेरी .env फ़ाइल में मेरे पास है:

SESSION_DRIVER=cookie 

और मुझे पता है यह उठाया जा रहा है कि, क्योंकि जब मैं इसे बदल यह एक त्रुटि फेंकता है (क्योंकि मैं memcached है सेट नहीं करते memcached करने के लिए)।

मैं भी मिडलवेयर सक्रिय कर दिया है:

$app->middleware([ 
    'Illuminate\Session\Middleware\StartSession', 
    'Illuminate\View\Middleware\ShareErrorsFromSession', 
]); 

तब मेरे नियंत्रक में मेरे पास है:

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 

class SessionController extends Controller 
{ 
    public function index(Request $request) 
    { 
     $request->session()->put('email', '[email protected]'); 
     $request->session()->save(); // Not sure if this is required 

     var_dump($request->session()->get('email')); 
     exit; 

     return view('session.index', ['test' => $value]); 
    } 
} 

मूल्य जब मैं पृष्ठ लोड सेट है:

string(13) "[email protected]" 

लेकिन फिर जब मैं चर सेट करने वाली रेखाओं पर टिप्पणी करता हूं, और फिर मैं पृष्ठ को रीफ्रेश करता हूं, मान शून्य है:

// $request->session()->put('email', '[email protected]'); 
// $request->session()->save(); 

var_dump($request->session()->get('email')); 
exit; 

एक एकल कुकी ब्राउज़र में स्थापित किया जा रहा है, लेकिन यह सत्र चर के लिए होने के लिए प्रकट नहीं होता है:

laravel_session 2ecef0103418ca82d068ec6a6c6fbec388af9b9e localhost / 2015-06-22T14:59:29.856Z 55 ✓ 

संपादित करें: कुकी वास्तव में अगर मैं के रूप में SESSION_DRIVER सेट सेट कर दिया जाता कुकी - चाहे मैं वास्तव में सत्र चर सेट करता हूं या नहीं।

मुझे यकीन नहीं है कि मैं यहां गलत कहां जा रहा हूं, और मुझे दस्तावेज़ीकरण बहुत व्यापक नहीं मिला है।

धन्यवाद

+0

कुकीज़ एन्क्रिप्ट की जाएगी इसलिए कोई सही कुकी नहीं है या नहीं, तो कोई जानकारी नहीं है। कृपया सुनिश्चित करें कि वास्तव में आपके लिए ठीक से काम करने के लिए कुकीज़ सक्षम हैं। भरोसा करना भी एक अच्छी बात नहीं है और यदि संभव हो तो आपको वास्तव में फ़ाइल ड्राइवर का उपयोग करना चाहिए। – user3158900

+0

इसी तरह के मुद्दों में भी चल रहा है। मेरे मामले में, कभी-कभी यह सत्र मान सेट करता है और मैं इसे पुनर्प्राप्त कर सकता हूं लेकिन फिर मैं सत्र मान को अपडेट नहीं कर सकता या इसे अनसेट नहीं कर सकता। मैं फाइल सत्र ड्राइवर का उपयोग कर रहा हूँ। – kalenjordan

+0

वह कुकी हमेशा सेट होती है और केवल 55 बाइट्स होती है। अगर यह एन्क्रिप्टेड सत्र डेटा था, तो मुझे लगता है कि यह लंबा होगा और हेक्साडेसिमल संख्या की तरह नहीं दिखता है। कुकी मानों को मनमाने ढंग से बाइट्स की अनुमति नहीं है (देखें [यह] (http://stackoverflow.com/questions/1969232/allowed-characters-in-cookies)) तो आपको इसे एन्कोड करना होगा। यदि आप एन्क्रिप्टेड, धारावाहिक सरणी को बेस 64 एन्कोड करते हैं, तो यह मेरे लिए 64 बाइट्स जितना छोटा हो सकता है। – jeteon

उत्तर

2

आप cookie सत्र भंडारण तुम भी कुकी मिडलवेयर की आवश्यकता होगी उपयोग करने के लिए कोशिश कर रहे हैं के बाद से। सक्षम मिडलवेयर होना चाहिए:

$app->middleware([ 
    'Illuminate\Cookie\Middleware\EncryptCookies', 
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 
    'Illuminate\Session\Middleware\StartSession', 
    'Illuminate\View\Middleware\ShareErrorsFromSession', 
]); 

अपने पहले उदाहरण में आप इसे बनाने के तुरंत बाद सत्र का उपयोग करते हैं ताकि आप मूल्य पुनर्प्राप्त कर सकें। हालांकि, चूंकि सत्र कुकी स्वयं कोड द्वारा सेट नहीं होती है, जब आप पृष्ठ पर वापस आते हैं, तो कोई सत्र पुनर्प्राप्त नहीं होता है। "laravel_session" कुकी हमेशा सेट होती है कि आप कुकी स्टोरेज का उपयोग करते हैं या नहीं। मैं एक प्रोजेक्ट में file स्टोरेज का उपयोग कर रहा हूं और फिर भी यह सेट हो जाता है।

इसके अलावा, AFAIK, लाइन:

$request->session()->save(); 

अनावश्यक है।


documentation कहता है:

सत्र सक्षम करने के लिए, आप अपने bootstrap/app.php फ़ाइल में $app->middleware() विधि कॉल के भीतर मिडलवेयर के सभी uncomment करना होगा।

+0

धन्यवाद आदमी, यह समाधान है! मिडलवेयर डिफ़ॉल्ट रूप से टिप्पणियों पर सेट हैं – Zl3n

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