【问题标题】:Laravel Manual Auth Doesn't Stay LoggedLaravel 手动身份验证不会保持记录
【发布时间】:2019-04-15 00:55:55
【问题描述】:

我在Laravel 5.7 中遇到了身份验证问题

例如,我在数据库中设置了一个全新的 Laravel 5.7 安装和 Users 种子

web.php 文件中:

 Route::get('/', function () {
    if (!auth()->check()) {
        dump('Not Logged');
        auth()->login(\App\User::first(), true);
        dump(auth()->user()->toArray());
    } else {
        dump('Logged');
    }

我希望在我第一次访问该页面时有一个 Not logged,然后每次刷新页面时都会有一个 Logged。

但每次我收到Not logged 的回复。

有人知道如何让用户手动登录吗?

【问题讨论】:

    标签: laravel authentication eloquent laravel-5.7


    【解决方案1】:

    我不建议在 web.php 路由文件上构建身份验证,您应该尝试以有组织的方式拆分代码。 当心!auth()->check(),因为您并没有完全评估它是否为假,而是在验证布尔值的反转。意思是,如果它是真的,它会检查它是否是假的。

    您的用户表中有记录吗?

    您将会话存储在文件或数据库中的什么位置?

    尝试Auth::login(\App\User::first(), true); 并打印出用户是否确实使用dd(Auth::user()) 登录

    https://laravel.com/docs/5.7/authentication#authenticating-users

    【讨论】:

    • 是的,我知道这只是一个全新的 laravel 安装的示例,这就是为什么我将它放在 web 文件中的原因:) 我在 User 表中有一些记录(如果我转储 auth()->user()登录后,它工作正常)我记录了其余的请求,但不要为下一个请求保持记录
    • 打印 Auth::user() 以确认您的用户确实已登录
    • Auth 组件按预期工作,您可以通过创建不同的路由 (Route::get(/test)) 来检查它是否被记录并在那里打印 auth->user()。另外,只需简化 if 语句,如果 (auth->check()) 记录它,否则转储
    猜你喜欢
    • 2014-03-24
    • 2020-09-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2020-09-14
    • 1970-01-01
    • 2017-10-05
    相关资源
    最近更新 更多