Laravel 登录后重定向回原始目的地
Web 应用程序中经常需要此功能。 Laravel 为基本功能提供了优雅的解决方案,从而引发了这样的问题:这是否是一个错失的机会。
对于 Laravel 5.3 及更高版本
正如 Scott 指出的,一个原生的现在存在方法:
return redirect()->intended('defaultpage');
对于 Laravel 5 最多5.2
身份验证中间件:
// redirect to "/login" and store the URL in session if (Auth::guest()) { return redirect()->guest('login'); }
登录操作:
// redirect back to intended page or default if not available if (Auth::attempt(['email' => $email, 'password' => $password])) { return redirect()->intended('defaultpage'); }
对于拉维尔4
虽然早期版本没有官方支持,但你仍然可以实现:
Auth Filter:
// redirect to "/login" and store the URL in session Route::filter('auth', function() { if (Auth::guest()) { return Redirect::guest('login'); } });
登录操作:
// redirect back to intended page or default if not available if (Auth::attempt(['email' => $email, 'password' => $password])) { return Redirect::intended('defaultpage'); }
对于 Laravel 3
早期的方法涉及将重定向存储在会话中:
Auth过滤器:
Route::filter('auth', function() { if (Auth::guest()) { Session::put('redirect', URL::full()); return Redirect::to('/login'); } if ($redirect = Session::get('redirect')) { Session::forget('redirect'); return Redirect::to($redirect); } });
控制器:
// login action public function post_login() { if (Auth::attempt($credentials)) { return Redirect::to('logged_in_homepage_here'); } return Redirect::to('login')->with_input(); }
此方法允许任何组件在会话中设置重定向以供后续检索。
以上是Laravel 登录后如何将用户重定向回原来的目的地?的详细内容。更多信息请关注PHP中文网其他相关文章!