Php 登录后的Laravel重定向
这是文件 当用户成功通过身份验证时,他们将被重定向到Php 登录后的Laravel重定向,php,laravel,authentication,laravel-5.3,Php,Laravel,Authentication,Laravel 5.3,这是文件 当用户成功通过身份验证时,他们将被重定向到 /homeURI。您可以自定义身份验证后重定向 通过在登录控制器上定义重定向到属性来定位, 注册表控制器和重置密码控制器: protected$redirectTo='/' 如果重定向路径需要自定义 生成逻辑您可以定义重定向到方法,而不是 重定向到属性: 受保护的函数重定向到(){ // } 所以我定义了它 protected function redirectTo() { if (\Auth::user()->isAdmin(
/home
URI。您可以自定义身份验证后重定向
通过在登录控制器
上定义重定向到
属性来定位,
注册表控制器
和重置密码控制器
:
protected$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()的实现
我找不到它在哪里检查重定向到
方法
顺便说一句,我使用的是Laravel 5.3.28
有什么建议吗
编辑
这是固定在5.3.29,而我是在5.3.29。尽管如此,我还是忍不住认为文档有问题,或者这个laravel
helper是他们为创建laravel项目而创建的。我确实使用它来生成项目,但它获取的不是最新版本。在5.3中,您可以覆盖LoginController
中的sendLoginResponse()
以在登录后将用户重定向到自定义页面:
return redirect('/');
替换为重写authenticated()
函数:
protected function authenticated($request,$user)
{
if(\Auth::user()->isAdmin()){
return redirect()->intended('dashboard');
}
return redirect()->intended('/home');
}
redirectTo功能按预期工作,但已在5.3.29版中引入
也许这会有帮助
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') }}">
这一点很明显。我的意思是为什么文档提到了一些无法实现的东西?Laravel新版本的文档通常只是从旧版本复制粘贴而来,但框架本身一直在变化<代码>重定向到
属性从5.2开始对我不起作用。真遗憾。你不能依赖官方文件!没有什么是完美的。Laravel文档仍然很棒。关于覆盖sendLoginResponse
,我认为这不是一个好主意。因为它也做了一些其他的事情,我不得不重复它们。覆盖authenticated
似乎是一个更好的主意。@vfsoraki它是AuthenticateUsers
trait,在这里return$this->authenticated($request,$this->guard()->user())?:redirect()->designed($this->redirectPath())你所说的空函数是什么意思?我的意思是它被实现为一个空函数,仅此而已。没什么重要的:)
<form class="form-horizontal" role="form" method="POST" action="{{ url(config('locales.locale_prefix'), 'login') }}">