单击后,Laravel会话数据将丢失

时间:2016-02-01 20:46:32

标签: php laravel laravel-5 session-variables 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');
    }
}

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

1 个答案:

答案 0 :(得分:4)

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

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

如果删除网络中间件,您将收到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,
    ],
];