用户登录后,Laravel 5 会话不会持续存在

新手上路,请多包涵

我在使用 Laravel 5 时遇到了一个有趣的问题。

用户登录后,登录状态不会跨页面持久化。显然它与 Session::

我登录用户的方式非常简单:

 if (Auth::attempt(['email' => $data['email'], 'password' => $data['password']],
    isset($data['remember_me']) ? TRUE : FALSE))
{
    return redirect()->intended('/');
}

如果用户未登录,一个简单的 print_r(Session::all()); 会给我以下信息:

 Array
(
    [_token] => wV8o75lZnCZ0f6CMMQgdBBM2AxSYjtWisAXx6TgZ
    [flash] => Array
        (
            [old] => Array
                (
                )

            [new] => Array
                (
                )

        )

    [_previous] => Array
        (
            [url] => http://localhost/public
        )

)

用户登录后重定向到 / 数组如下所示:

 Array
(
    [_token] => wV8o75lZnCZ0f6CMMQgdBBM2AxSYjtWisAXx6TgZ
    [flash] => Array
        (
            [old] => Array
                (
                )

            [new] => Array
                (
                )

        )

    [_previous] => Array
        (
            [url] => http://localhost/public/
        )

    [login_82e5d2c56bdd0811318f0cf078b78bfc] => 2
)

但是,在导致页面刷新或重定向的任何操作之后,会话状态都会丢失。

我的 config/session.php 文件如下所示:

 <?php

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => 120,
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => null,
    'table' => 'sessions',
    'lottery' => [2, 100],
    'cookie' => 'laravel_session',
    'path' => '/',
    'domain' => null,
    'secure' => false,

];

可以写入和读取本地存储的会话文件。

我试过使用 database 驱动器而不是文件。同样的事情发生了 [login_xx] => 2 键/值丢失,我注销了。

由于 Session:: 没有完全重置,我怀疑我没有正确登录用户或者只是做了一些我不应该在某处做的事情。

原文由 Andrei 发布,翻译遵循 CC BY-SA 4.0 许可协议

回复
阅读 89
1 个回答

我遇到了类似的问题,我只是打电话给:

 Session::save();

在对会话存储进行任何添加/更新/删除之后。所以它看起来像:

 $id = Input::get('id');
Session::forget('cart.' .$id);
Session::save();

原文由 Kalpesh Panchal 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
宣传栏