Laravel登录后保存用户页面
问题的出现原因:在Laravel中,Socialite和默认的身份验证(auth)的重定向机制不同,导致用户登录后无法正确跳转到想要的页面。
解决方法1(针对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);
如果有独立的登录页面,可以在登录页面的后台控制器中添加protected function authenticated(Request $request, $user)
方法,并将方法2中的代码添加进去。
如果没有独立的登录页面,可以在LoginController中添加protected function authenticated(Request $request, $user)
方法,并将方法2中的代码添加进去。
如果登录后需要跳转到不同的页面,可以根据需要修改return redirect()->intended('dashboard');
中的页面路径。