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

我有以下代码。登录时有一个 link 转到 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'));
    });
});

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