【问题标题】:Laravel 5.5 Session getting lost on each requestLaravel 5.5 会话在每个请求中丢失
【发布时间】:2018-04-15 10:03:52
【问题描述】:

登录时,身份验证有效,用户被重定向到登录页面(最初是 /home,但我也尝试更改为 /dashboard),但随后会话似乎丢失了,因为它在登录时显示一个空数组在登录的控制器上。

我的设置涉及使用 Redis 作为会话存储,但我也尝试了文件和数据库驱动器,结果相同。

即使是陌生人,我也可以毫无问题地在我的 redis cli 中查看会话数据。

我尝试过的一些“修复”无济于事:
- 从会话 cookie 名称中删除下划线(以及破折号/连字符)
- 将会话域设置更改为主域和子域的所有组合

是否有人对任何其他可能的修复有任何想法?

更新:

尝试了其他修复:

  • 替代会话驱动程序(文件、数据库和 cookie)
  • php artisan cache:clear
  • php artisan clear-compiled

【问题讨论】:

    标签: php session redis laravel-5.5


    【解决方案1】:

    你的路线是在哪里写的? 请注意,web 中间件使用默认的 Laravel Session。

    所以用 routes/web.php 编写的路由是使用 Laravel Session 的路由。您也可以尝试使用文件驱动程序,但请确保/storage 文件夹具有at 0755 权限。

    另外,你能检查一下App\Providers\RouteServiceProviders mapWebRoutes() 方法看起来像这样吗?

    /**
     * Define the "web" routes for the application.
     *
     * These routes all receive session state, CSRF protection, etc.
     *
     * @return void
     */
    protected function mapWebRoutes()
    {
        Route::middleware('web')
             ->namespace($this->namespace)
             ->group(base_path('routes/web.php'));
    }
    

    假设你没有修改app\Http\Kernel.php

    【讨论】:

    • 它们在 routes/web.php 中,我可以试一试
    • 我看到文件被添加到存储/框架/会话中,但问题仍然存在
    • 编辑并添加了对原始答案的一些额外检查
    • 我的 RouteServiceProvider 与您所拥有的相匹配,我对 Kernel.php 所做的唯一编辑是我在 web 中间件组中取消注释 \Illuminate\Session\Middleware\AuthenticateSession::class 但我已尝试将其注释掉再次无济于事
    • 请在取消注释该行后运行php artisan cache:clearphp artisan clear-compiled,然后重试。
    猜你喜欢
    • 2011-01-09
    • 2018-01-04
    • 1970-01-01
    • 2012-11-28
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    相关资源
    最近更新 更多