升级到Laravel 5.2使所有会议无效

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

从Laravel 5.1.17升级到5.2。我的config/auth.php最初载于:

'driver' => 'eloquent',
'model'  => 'Project\User',
'table'  => 'users',

新文件与默认文件相同,但更新后的命名空间除外。

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => Project\User::class,
    ],
],

我的envSESSION_DRIVERredis。我从Redis那里什么都没弄清楚。(注意,这也发生在我的其他项目中,其中驱动程序是file但我对他们并不那么在意。)

我有两个分支,L5.2和硕士(5.1.17)。在切换分支之后,我只需运行composer install

如果我登录师父,然后切换到L5.2,我要退出如果我换回师父,我重新登录如果我登录L5.2,然后切换到师父,我继续登录如果我换回L5.2,我继续登录

如果它将使我的所有用户会话失效并迫使他们再次登录,我会犹豫是否升级。有办法避免这种情况吗?

唯一被修改的其他文件是composer.jsoncomposer.lockapp/Exceptions/Handler.php,和config/app.php没有任何东西触动了八月。

提问于
用户回答回答于

在5.1.17中:

return 'login_'.md5(get_class($this));

在5.2($this->name会是web默认情况下:

return 'login_'.$this->name.'_'.sha1(get_class($this));

而且,类名本身也会从GuardSessionGuard

如果我将此方法替换为:

return 'login_'.md5('Illuminate\Auth\Guard');
用户回答回答于

你应该做的是开放的app/Http/routes.php

Route::group(['middleware' => ['web']], function () {
    // here your previous routes
});

编辑

经过测试,我可以确认这种行为。

在这些情况下:

  • 5.1.17->5.2
  • 5.1.23->5.2
  • 5.1.28->5.2。*

升级到5.2之后,用户似乎不再被记录。当进入5.1版本时,分支用户将保持日志记录。当返回5.2到5.1时,用户将再次被记录。

n.EDIT2

这似乎是官方和预期的行为,因为升级指南增加了如下内容:

由于对身份验证系统的更改,任何现有会话在升级到Laravel 5.2时都将失效。

扫码关注云+社区

领取腾讯云代金券