【问题标题】:Laravel 5.3 Remember me Auth issueLaravel 5.3记住我身份验证问题
【发布时间】:2017-03-15 04:15:26
【问题描述】:

我已经在我的 laravel 5.3 项目中实现了记住我的登录,但是我在运行时遇到了一些问题,当用户返回页面时,它会自动登录,但是由于会话已经过期,所以没有设置自定义会话变量。

我的会话有效期为 120,并且在关闭时过期是真的。

我的问题是:如何检查用户是否正在通过记住我的令牌进行身份验证以重新签名会话变量?我正在考虑为此创建一个中间件,但我不知道这是否是正确的方法。

我的海关会话变量是:

session()->get('client_id') -> int
session()->get('acl') -> array

谁能指引我正确的方向?

【问题讨论】:

    标签: php laravel authentication laravel-5.3


    【解决方案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 就是因为这个。
    猜你喜欢
    • 2017-05-25
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2021-01-28
    • 1970-01-01
    相关资源
    最近更新 更多