【问题标题】:Laravel Auth return nullLaravel 身份验证返回 null
【发布时间】:2021-02-02 08:59:34
【问题描述】:

我正在使用 2 个路由,一个用于 loginUsingId(1),第二个用于测试用户是否已登录。 当尝试查看 Auth::id() 时,它永远为空。

//My Routes
    Route::get('/login', [\App\Http\Controllers\UserController::class,'login']);

    Route::get('/test_login', [\App\Http\Controllers\UserController::class, 'getUser']);

这是 UserController 中的方法 命名空间 App\Http\Controllers;

use App\Http\Middleware\Authenticate;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

    public function login()
    {
        $auth = Auth::loginUsingId(3);
        return var_dump($auth); // <--- here return 3
    }


    public function getUser()
    {
        return response(['user'=>Auth::id()]);
    }

【问题讨论】:

  • 你不是登录用户
  • 你能解释一下吗@sta
  • 我用Laravel 8.25检查了它。使用Auth::loginUsingId(1) 登录后,如果转到其他页面,Auth::id() 返回null。如果我手动登录,则不会发生这种情况。好像是个bug
  • 好的,@sta 感谢您的回复。 “手动登录”是什么意思?
  • laravel 版本为 8.19

标签: laravel authentication


【解决方案1】:

你需要应用中间件才能工作Auth::user()

Route::get('/test_login', [\App\Http\Controllers\UserController::class, 'getUser'])->middleware('auth');

那就试试

【讨论】:

  • 使用中间件('auth')它会将我重定向到名为'login'的路由,而无需通过 trought 控制器
  • 表示你没有登录
  • 是的,但我不明白为什么,因为我使用了 $auth = Auth::loginUsingId(3);返回 var_dump($auth);然后返回 3
【解决方案2】:

如果您不想使用默认的 Auth 中间件,它就不会工作。 虽然,记住有 auth()-&gt;user() 您可以尝试的方法;更方便,无需导入任何模型即可使用。

【讨论】:

  • 表示没有人登录
猜你喜欢
  • 1970-01-01
  • 2021-03-18
  • 2021-01-01
  • 1970-01-01
  • 2018-12-09
  • 2017-06-12
  • 2018-10-30
  • 2014-03-25
  • 1970-01-01
相关资源
最近更新 更多