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

问题描述 投票:0回答:1

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

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

生成链接:

$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('[email protected]', 'blablabla');

     $message->to('[email protected]', 'blablabla')->subject('test');
  });

有一条路由捕获通过邮件发送的链接,该链接应该与用户一起登录(在这种情况下,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::check()之后做一个Auth::login($user);它返回true,那么用户登录了吗?

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

知道发生了什么事吗?

laravel laravel-5.7 backpack-for-laravel
1个回答
1
投票

所以我发现了问题,

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.