通过代码登录似乎在 laravel 中不起作用

Login by code seems to not work in laravel

基本上,我正在尝试通过电子邮件发送一个 link,让您使用特定帐户登录,然后将您重定向到一个页面。

我可以成功生成 link 并使用 laravel 中的 URL 功能通过电子邮件发送它们,使用此代码:

正在生成 link:

$url = "some/page/".$travel_id;
  $link = URL::temporarySignedRoute(
     'autologin', now()->addDay(), [
         'user_id'       => 3,
         'url_redirect'  => $url,
     ]
 );

并发送邮件:

Mail::send('emails.travel', $data, function ($message) use ($data) {
     $message->from('mail@mail.com', 'blablabla');

     $message->to('reciever@mail.com', 'blablabla')->subject('test');
  });

有一条路由可以捕获通过邮件发送的 link ,该邮件应该让您登录用户(在本例中为 ID 为“3”的用户)并将您重定向到某个页面但是当它重定向时,它会提示您进入登录页面,就好像您没有登录一样。

这是路线:

    Route::get('/autologin', function (Request $request) {
    $user = User::findOrFail($request->user_id);
    if (! $request->hasValidSignature()) {
        abort(403);
    }

    Auth::login($user);   
    return redirect($request->input('url_redirect'));
})->name('autologin');

当我尝试在 Auth::login($user); 之后执行 Auth::check() 时,它 returns 是真的,那么用户是否已登录?

我也试过 Auth::loginUsingId($request->user_id); 没有不同的结果。

知道发生了什么吗?

所以我发现了问题,

我是用背包用户登录的,但我使用的是 laravel 的默认身份验证功能。

原来我需要使用:backpack_auth()->login($user); 而不是 Auth::login($user); 如果我想使用背包用户登录。

也使用 backpack_auth()->check() 而不是 Auth::check()