php - Laravel 5.3 - 更改重置密码的身份验证路由

标签 php laravel-5.3

在将授权 Controller 移动到我的Http/Controllers/Admin/Auth 目录,以及将授权 View 移动到admin/auth 并将路由文件设置为这个:

Route::group(['middleware' => 'web', 'prefix' => 'admin', 'namespace' => 'Admin'], function() {
    Auth::routes();
});

点击重设密码邮件中的链接时,出现错误:

NotFoundHttpException in RouteCollection.php line 161:

我在 Controller 中修改了 showResetForm 方法,如下所示:

    public function showResetForm(Request $request, $token = null)
    {
        return view('admin.auth.passwords.reset')->with(
            ['token' => $token, 'email' => $request->email]
        );
    }

这是 php artisan route:list 中列出的路由:

           POST      | admin/password/email             |                   | App\Http\Controllers\Admin\Auth\ForgotPasswordController@sendResetLinkEmail  | web,web,guest |
|        | POST      | admin/password/reset             |                   | App\Http\Controllers\Admin\Auth\ResetPasswordController@reset                | web,web,guest |
|        | GET|HEAD  | admin/password/reset             |                   | App\Http\Controllers\Admin\Auth\ForgotPasswordController@showLinkRequestForm | web,web,guest |
|        | GET|HEAD  | admin/password/reset/{token}     |                   | App\Http\Controllers\Admin\Auth\ResetPasswordController@showResetForm        | web,web,guest |
|        | GET|HEAD  | admin/register                   |                   | App\Http\Controllers\Admin\Auth\RegisterController@showRegistrationForm      | web,web,guest |
|        | POST      | admin/register                   |                   | App\Http\Controllers\Admin\Auth\RegisterController@register                  | web,web,guest

用户在密码重置邮件中收到的链接仍然指向没有管理员前缀的旧路由,我该如何更改?

最佳答案

首先,您必须覆盖 Illuminate\Auth\Notifications\ResetPasswordtoMail 函数。将 [URL_TO_RESETPWD] 替换为您的 URL。

namespace App\Notifications;

use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Notifications\Messages\MailMessage;

class AppResetPassword extends ResetPassword {

    // Overriding the function
    public function toMail($notifiable) {
        return (new MailMessage)
            ->line('You are receiving this email because we received a password reset request for your account.')
            ->action('Reset Password', [URL_TO_RESETPWD], $this->token))
            ->line('If you did not request a password reset, no further action is required.');
    }
}

下一步 在您的管理员用户模型中,覆盖 CanResetPassword 特征的 sendPasswordResetNotification 函数以使用上述类。

public function sendPasswordResetNotification($token) {
    $this->notify(new App\Notifications\AppResetPassword\ResetPasswordNotification($token));
}

希望对您有所帮助。

关于php - Laravel 5.3 - 更改重置密码的身份验证路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364287/

相关文章:

如果短时间内调用两次 PHP MySQL 更新不执行

php - 显示一列的 3 个最大值,包括重复值

php - laravel 使用多个数据库,查询语法

javascript - 提交多个选定的行 Jquery 数据表

php - 如何使用 "onchange="向 PHP 发送多个值?

javascript - 删除所选选项中的重复元素

php - 试图获取非对象 Laravel 5.4 的属性

laravel - 为什么这个 Laravel 5.4 服务提供者不注册?

php - 在循环 Laravel PHP 中捕获上一次迭代的值

vue.js - vue-router 结合 laravel 路由