我有问题。当访客在页面上,并想要登录。登录后,Laravel在主页面上重定向。我怎么办,当客人登录保存他所在的页面并重定向到那里?
中间件身份验证:
{{1}}
我使用默认的auth laravel。但登录后无法恢复上一页。
答案 0 :(得分:0)
由于最初的问题是针对社交网站,后来修改为默认身份验证,我将在此处解决。
<强> 1。 Laravel Socialite
Laravel Socialite意图重定向不按人们期望的方式工作,因为第一次重定向来自控制器进行身份验证。
这是您需要做的事情。
在redirectToProvider
方法中,添加以下内容:
if(!session()->has('url.intended')) {
session()->put('url.intended', url()->previous());
}
然后,在您的handleProviderCallback
方法中,添加以下内容:
if(session()->has('url.intended')) {
$redirectUrl = session('url.intended');
} else {
$redirectUrl = 'your fallback url here';
}
session()->forget('url.intended');
return redirect($redirectUrl);
<强> 2。默认身份验证如果您有单独的登录页面
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// Authentication passed...
return redirect()->intended('dashboard');
}
第3。默认身份验证如果您没有单独的登录页面
这意味着您可能在每个页面上都有一个模式窗口用于登录,因此,登录本身没有单独的页面,每个页面都可以执行登录请求。
$redirectUrl = session('url.intended', url()->previous());
session()->forget('url.intended');
return redirect($redirectUrl);