通过代码登录似乎在 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()
。
基本上,我正在尝试通过电子邮件发送一个 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()
。