微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel:如何为“记住”的用户会话加载会话变量绕过登录控制器

如何解决Laravel:如何为“记住”的用户会话加载会话变量绕过登录控制器

我在 Laravel 7.0 中构建了一个应用程序,当用户登录时,我将一些应用程序范围的变量放入会话变量中,方法是将其添加到 LoginController 中:

protected function authenticated ($user)
{
    Session::put('notifications',auth()->user()->unreadNotifications);
}

如果已通过在发生这种情况时注销并重新登录来验证问题(因为会话变量已按预期创建)。

不幸的是,当用户返回站点并“记住”他们之前的会话时,似乎会绕过 LoginController 并且未加载会话变量。有谁知道这种类型的登录是否会触发我可以在其中重新生成会话变量的事件?或者更优雅的处理方式?

谢谢!

解决方法

有一个 Login 事件 Illuminate\Auth\Events\Login 被触发,您可以检查保护方法 viaRemember 以查看它们是否通过记住我的 cookie 进行了身份验证。

您可以监听此 Login 事件,而不是使用该 authenticated 方法,您将涵盖这两种情况。

,

$messages= [

        'username.min' => 'A User Name must be greater then 4 alphabets','password.min' => 'A Password must be greater then 8 alphabets','username.required' => 'A User Name is required','password.required'  => 'A Password is required',];
    $this->validate($request,[
        'email' => 'required','password' => 'required|min:8|max:255',],$messages);

    if(!auth()->attempt($request->only('email','password'),$request->remember))
    {
        return back()->with('status','Invalid Credentials');
    }
    return redirect()->route('dashboard');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。