Auth::user 不会在重定向时保留
Posted
技术标签:
【中文标题】Auth::user 不会在重定向时保留【英文标题】:Auth::user is not preserved on redirect 【发布时间】:2016-04-02 13:59:14 【问题描述】:从 laravel 5.1 更新到 5.2 后,我遇到了这个意想不到的问题。我使用Auth::login
手动登录用户。并且当我重定向用户时不会保留。
所有配置都是从清晰的 laravel 5.2 安装中优雅移植的。
这是路线代码:
Route::group([ 'middleware' => [ 'web' ] ], function ()
Route::get('test', function ()
$user = \Upping\Models\User::find(311);
Auth::login($user);
Auth::check(); // true
return redirect('authCheck');
);
Route::get('authCheck', function ()
Auth::check(); // false
);
);
config\auth.php -> 提供者
'users' => [
'driver' => 'eloquent',
'model' => \Upping\Models\User::class,
],
说到 laravel 的体验,小小的提示对我来说应该足够了。感谢您的帮助。
【问题讨论】:
不太可能是重定向造成破坏。检查您的会话是否正常工作。 域是否完全相同(重定向之前和之后) - 有 www 还是没有 www?如果您不进行此重定向并转到authCheck
url,会发生什么情况?也是false
吗?
@MarcinNabiałek 1) 域完全相同(都没有 www)。 2) 直接访问authCheck
也会给我false
。
@ceejayoz 是的,我很确定这个问题与会话有关。虽然邪恶的核心没有引起我的注意。配置是简单的默认设置,在更新之前一切正常。
【参考方案1】:
你有没有把你所有的路线都放进去:
Route::group(['middleware' => ['web']], function ()
// here your routes
);
?如果没有,您应该这样做,因为在 Laravel 5.2 中,会话默认为 web
组中间件启动。详情见Routing documentation
编辑
如果不是这样 - 我看到您使用自定义用户类 \Upping\Models\User
用于登录。 config/auth.php
providers -> users -> model
中设置了相同的类吗?
【讨论】:
不,绝对不是这样。我更新了我的帖子。抱歉隐藏信息。 我将该部分添加到问题中。情况似乎并非如此。用户类使用更新的特征。我可以在我 Auth::login 之后获取用户。不是在重定向之后。【参考方案2】:所以真正的原因有点牵强。我阅读了错误日志并认为这是 Zend Z-ray 及其 laravel 插件对 5.2 更新的意义。
在我关掉它之后,一切都开始正常运行了。
【讨论】:
以上是关于Auth::user 不会在重定向时保留的主要内容,如果未能解决你的问题,请参考以下文章