Laravel 5.3记住我身份验证问题
Posted
技术标签:
【中文标题】Laravel 5.3记住我身份验证问题【英文标题】:Laravel 5.3 Remember me Auth issue 【发布时间】:2017-03-15 04:15:26 【问题描述】:我已经在我的 laravel 5.3 项目中实现了记住我的登录,但是我在运行时遇到了一些问题,当用户返回页面时,它会自动登录,但是由于会话已经过期,所以没有设置自定义会话变量。
我的会话有效期为 120,并且在关闭时过期是真的。
我的问题是:如何检查用户是否正在通过记住我的令牌进行身份验证以重新签名会话变量?我正在考虑为此创建一个中间件,但我不知道这是否是正确的方法。
我的海关会话变量是:
session()->get('client_id') -> int
session()->get('acl') -> array
谁能指引我正确的方向?
【问题讨论】:
【参考方案1】:检查以下解决方案,看看它是否有效。
Determine if the User Was Authenticated Via the Remember Cookie
已编辑:
给EventServiceProvider
添加一个事件监听器
protected $listen = [
'Illuminate\Auth\Events\Login' => [
'App\Listeners\UpdateLoginType@handle',
],
];
为侦听器生成事件和处理程序
php artisan event:generate
转到UpdateLoginType
并编辑handle
方法以检查登录类型
public function handle(Login $event)
if (\Auth::viaRemember())
//do something
else
//do something else
确保在登录时正确传递remember
变量。
类似this one的问题
【讨论】:
我知道函数 viaRemember() 但无论我做什么它总是返回 false,但我的问题是在哪里使用它? @Galfau 回答已编辑。你可以试试看它是否有效。 它工作得很好,作为一个事件,我只是将 session()-set() 逻辑从 AuthController@login 移动到事件,现在我不需要使用 Auth::viaRemember(),因为 Laravel登录成功后将始终抛出该事件。谢谢! 顺便说一句,只有当用户返回页面并使用 remember_me_token cookie 进行身份验证时,方法 viaRemember() 才会返回 true,而不是当用户选中登录页面上的记住我框时,我''''''''''''''''''''''''''''''''''''''''''''''''''''''''''始终返回 false以上是关于Laravel 5.3记住我身份验证问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel Passport (5.3) 记录身份验证尝试