单击后Laravel会话数据丢失

Hyd*_*xis 1 php session-variables laravel laravel-5 laravel-5.2

class FileController extends Controller
{
    public function login()
    {
        /*
         * TODO: Handle via CAS
         * Hardcoded for demo purposes
         */
        Session::put('isLogged', true);
        Session::put('index', "123456");

        return View::make('login');
    }

    public function user()
    {
        if(Session::get('isLogged') == true )
            return View::make('user');
    }
}
Run Code Online (Sandbox Code Playgroud)

我有以下代码。登录时有一个指向FileControllers @ user的链接。在第二页上,我的会话数据丢失(Session :: all()为空)。是什么导致此问题?

Ste*_*man 5

尝试使用中间件将您的路线(位于内app/Http/routes.php)包装:Route::group()web

Route::group(['middleware' => ['web']], function () {
    // My Routes
});
Run Code Online (Sandbox Code Playgroud)

一种简单的测试方法:

Route::group(['middleware' => 'web'], function () {
    Route::get('', function () {
        Session::set('test', 'testing');
    });

    Route::get('other', function () {
        dd(Session::get('test'));
    });
});
Run Code Online (Sandbox Code Playgroud)

如果删除Web中间件,null则将收到消息,因为web中间件负责启动会话。

确保您的web内部具有中间件组app/Http/Kernel.php

protected $middlewareGroups = [
    'web' => [
        Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        Middleware\VerifyCsrfToken::class,
    ],
];
Run Code Online (Sandbox Code Playgroud)