gpt4 book ai didi

php - Laravel 的 redirectTo() 方法发生了什么?

转载 作者:IT王子 更新时间:2023-10-29 00:04:14 26 4
gpt4 key购买 nike

我们可以覆盖此属性以在 LoginController 中登录后重定向用户:

protected $redirectTo = '/home';

这是文档中的声明:

If the redirect path needs custom generation logic you may define a redirectTo method instead of a redirectTo property:

protected function redirectTo() {
// }

但它总是重定向到 '/home'; 无论条件如何。

protected function redirectTo()
{
if (Auth::user()->role==0) {
return '/volunteer';
} else {
return '/donor';
}
}

如果方法存在,它将使用它,否则将使用该属性。但看起来即使该方法存在也正在使用属性。

但是重写 authenticated()sendLoginResponse() 函数工作正常。

protected function authenticated()
{
if (Auth::user()->role==0) {
return redirect('/volunteer') ;
} else {
return redirect('/donor');
}
}

redirectTo() 方法有什么问题?这是 GitHub source code这些方法。

我正在使用 Laravel 版本 5.3.28

最佳答案

这是 Laravel v5.3.28 中 src/Illuminate/Foundation/Auth/RedirectsUsers.php 中的 redirectPath() 方法

public function redirectPath()
{
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}

5.3.29及以上以后的版本。这已通过提交在文件中更改:

Add auth redirect path generation method (#16896)

 public function redirectPath()
{
if (method_exists($this, 'redirectTo')) {
return $this->redirectTo();
}
return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home';
}

因此这部分文档仅适用于 Laravel 5.3.29 及更高版本

If the redirect path needs custom generation logic you may define a redirectTo method instead of a redirectTo property:

protected function redirectTo() { // }


v5.3.28 的解决方案

要使 redirectTo() 方法在 v5.3.28 中工作,请在 src/Illuminate/Foundation/Auth/RedirectsUsers.php 中的 redirectPath() 方法中手动添加此方法。

if (method_exists($this, 'redirectTo')) {
return $this->redirectTo();
}

关于php - Laravel 的 redirectTo() 方法发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42024477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com