在Laravel 5中更改密码重置重定向链接

问题描述 投票:3回答:6

我正在关注有关使用Laravel设置身份验证的this教程,我大部分都在那里。

当我发出密码重置请求时,我收到一封电子邮件发送给我,如果我点击电子邮件中的链接,我会看到一个表格,然后我会正确填写并希望重定向回/仪表板,不过这个永远不会发生,而是重定向到/ home。

我无法提供任何代码,因为Laravel在幕后完成了所有工作。任何帮助表示赞赏:)。

php laravel redirect passwords
6个回答
8
投票

这是因为您希望重置密码控制器在成功重置时将您重定向到/dashboard。也许我错了,但我无法在代码中的任何地方看到指定的内容(正如您所说,基于新的Laravel安装)。

为了证明这一点,让我们遵循以下代码:

默认情况下,在新的Laravel安装中,您将在PasswordController目录中获得app/Http/Controllers/Auth/。在line 21 of that file,它'包括'ResetsPasswords特征。那么让我们来看看这个特质。

正如您所看到的,在postReset方法(这是运行最终实际密码重置的方法)中,在line 95上,重定向位置被推迟到redirectPath,正如您所看到的,在line 131上,代码专门转发用户如果控制器上没有/homeredirectPath属性,则为redirectTo

因此,要手动设置重定向位置,只需在protected $redirectPath = '/dashboard';类中设置Http\Controllers\Auth\PasswordController即可。

但是,在您链接到的页面上,请参阅"After resetting passwords"部分以获取有关此文档的官方文档。


7
投票

对于Laravel 5.3,您必须在redirectPath中设置属性PasswordController,当您使用Laravel的内置函数时,该属性在登录后用于重定向。

应该是这样的:

# PasswordController.php

protected $redirectPath = '/dashboard';

自从Laravel 5.4以来,该物业被重命名为$redirectTo

# PasswordController.php

protected $redirectTo = '/dashboard';

1
投票

如果有人在重定向时需要不同的地址(基于例如用户角色)可以将其添加到ResetPasswordController

public function redirectPath()
    {
        if (auth()->user()->hasRole(xyz)) {
            return route('');
        }

        return route('');
    }

1
投票

如果您正在使用Spark,则需要在getResetSuccessResponse()中覆盖/spark/src/Http/Controllers/Auth/PasswordController.php

为什么?

因为/spark/src/Http/Controllers/Auth/PasswordController.php使用具有ResetsPasswords traitgetResetSuccessResponse()并且它重定向到来自redirectPath()RedirectsUsers trait$redirectTo是Laravel框架的一部分,无法改变。

不知何故,这是忽略/home属性并将用户发送到$redirectTo而不是在public function redirectPath() { if (property_exists($this, 'redirectPath')) { return $this->redirectPath; } return property_exists($this, 'redirectTo') ? $this->redirectTo : '/home'; } 中声明的内容:

$redirectPath

或者也许只是在某处创建$redirectPath属性。

希望这有助于某人!


0
投票

在Laravel 5.6中,$redirectTo不是有效属性。请改用Documentation

见:redirectTo


0
投票

更改Http\Controllers\Auth\ResetPasswordController的字段protected $redirectTo = '/home'; 的值:

public function __construct()
{
    $this->redirectTo=route('home');
}

如果要使用动态路由,请从构造函数中对该字段进行增值:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.