Laravel会话数据在单击后丢失


Laravel session data is lost after click

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');
    }
}

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

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

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

测试这一点的简单方法:

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

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

确保app/Http/Kernel.php中有web中间件组:

protected $middlewareGroups = [
    'web' => [
        Middleware'EncryptCookies::class,
        'Illuminate'Cookie'Middleware'AddQueuedCookiesToResponse::class,
        'Illuminate'Session'Middleware'StartSession::class,
        'Illuminate'View'Middleware'ShareErrorsFromSession::class,
        Middleware'VerifyCsrfToken::class,
    ],
];