Tôi có cài đặt mới của Laravel 5, trên thực tế tôi đã thử phiên bản này trên nhiều phiên bản và tiếp tục gặp vấn đề tương tự.Phiên bản Laravel 5.2.10 của tôi không tồn tại
Tôi chưa thay đổi gì từ cài đặt mặc định trừ khi đặt trình điều khiển phiên làm lại. (File dựa cũng có cùng một vấn đề).
Tôi có hai tuyến đường thiết lập như sau
Route::get('/set/{value}', function($value) {
var_dump(Session::getId());
Session::set('test', $value);
return view('welcome');
});
Route::get('/get', function() {
return 'Get ' . Session::get('test');
});
Nếu tôi truy cập vào url/set/abc tôi thấy phiên xuất hiện trong REDIS (Tôi cũng thấy các tập tin được tạo ra khi sử dụng tập tin dựa). Phiên giao dịch có vẻ ổn trong REDIS như được hiển thị bên dưới
127.0.0.1:6379> KEYS *
1) "laravel:1a3ae6caff6346e4a173fdc1ab4c6eb0f138806b"
2) "laravel:fed1af2fb44c6e625953237c3fa6fcbb05366a5c"
3) "laravel:cb37286ccfe3e7caa20557aca840f50cb5a5f20d"
Mỗi lần tôi truy cập trang, nó sẽ tạo lại một phiên mới.
Các bộ phận quan trọng của tập tin session.php là như sau:
'lifetime' => 120,
'expire_on_close' => false,
Tôi cũng đã kiểm tra trong REDIS TTL của các biến session và họ được khởi tạo ở 120 phút (tương đương tính bằng giây).
Bất kỳ ý tưởng nào tôi đang làm sai?
Có thể đáng chú ý là tôi đang sử dụng vm nhà cửa (chứng khoán hoàn toàn) để kiểm tra điều này. Tôi cũng đã thử sử dụng nhiều trình duyệt. Không có cookie nào được gửi tới trình duyệt, tôi cho rằng id phiên sẽ được gửi tới trình duyệt như một phần của yêu cầu nhận ban đầu?
đó là thực sự kỳ lạ ... Tôi đang cố gắng để tái tạo hành vi cục bộ.Tôi tự hỏi liệu phương thức 'getId' có làm gì đó khó chịu không? – FBidu
@FBidu Tôi đã thử và không có hàm getId, nó dường như không ảnh hưởng đến nó theo bất kỳ cách nào, tôi nhận được cùng một hành vi kỳ quặc. –
@FBidu Trên thực tế ['getId'] (https://github.com/laravel/framework/blob/5.2/src/Illuminate/Session/Store.php#L162-L165) thực hiện những gì nó ngụ ý và không có gì hơn:). – Bogdan