[英]Laravel redirect after login
这是文档
用户成功通过身份验证后,将重定向到
/home
URI。 您可以通过在LoginController
,RegisterController
和ResetPasswordController
上定义redirectTo
属性来自定义验证后重定向位置:
protected $redirectTo = '/';
如果重定向路径需要自定义生成逻辑,则可以定义
redirectTo
方法而不是redirectTo
属性:
protected function redirectTo() { // }
所以我定义了它
protected function redirectTo()
{
if (\Auth::user()->isAdmin()) {
return '/dashboard';
} else {
return '/home';
}
}
但正如你可能猜到的那样,它不起作用。 它总是重定向到/home
。
通过消息来源,我发现了这一点
namespace Illuminate\Foundation\Auth;
trait AuthenticatesUsers
{
...
/**
* Send the response after the user was authenticated.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
protected function sendLoginResponse(Request $request)
{
$request->session()->regenerate();
$this->clearLoginAttempts($request);
return $this->authenticated($request, $this->guard()->user())
?: redirect()->intended($this->redirectPath());
}
...
}
这是$this->redirectPath()
namespace Illuminate\Foundation\Auth;
trait RedirectsUsers
{
/**
* Get the post register / login redirect path.
*
* @return string
*/
public function redirectPath()
{
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}
}
我找不到它检查redirectTo
方法的位置。
我正在使用Laravel 5.3.28,BTW。
有什么建议?
编辑
这是在5.3.29中确定的,而我在5.3.29。 我仍然无法帮助它,但认为文档有问题,或者他们为创建Laravel项目而创建的这个laravel
助手。 我确实用它来生成项目,并没有获取最新版本。
改为覆盖authenticated()
函数:
protected function authenticated($request,$user)
{
if(\Auth::user()->isAdmin()){
return redirect()->intended('dashboard');
}
return redirect()->intended('/home');
}
在5.3中,您可以在LoginController
覆盖sendLoginResponse()
,以便在登录后将用户重定向到自定义页面:
return redirect('/');
redirectTo函数按预期工作,但在5.3.29版本中引入
https://github.com/laravel/framework/blob/5.3/CHANGELOG-5.3.md
也许这会有所帮助
protected $redirectTo = '/account';
protected function redirectTo()
{
if ( ! empty(config('locales.locale_prefix'))) {
return $this->redirectTo = config('locales.locale_prefix') .'/account';
}
return $this->redirectTo;
}
并且还在形式上改变行动
<form class="form-horizontal" role="form" method="POST" action="{{ url(config('locales.locale_prefix'), 'login') }}">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.