Laravel 5.3 -更改重置密码的认证路由


Laravel 5.3 - changing auth routes for reset password

在将验证的控制器移动到我的Http/Controllers/Admin/Auth目录,以及将验证的视图移动到admin/auth并像这样设置路由文件后:

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

当点击重置密码邮件中的链接时,我得到一个错误:

RouteCollection.php第161行:

我已经修改了控制器中的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

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

首先必须重写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.');
    }
}

下一步在你的admin用户模型中,覆盖CanResetPassword trait的sendPasswordResetNotification函数来使用你的上述类。

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

我遇到了这个问题,我想用我自己的纯文本电子邮件。

添加到您的User模型:

public function sendPasswordResetNotification($token)
{
    Mail::send(['text' => 'emails.password'], ['token' => $token], function ($message) {
        $message->subject(config('app.name').' Password Reset Link');
        $message->to($this->email);
    });
}

创建views/emails/password.blade.php:

You are receiving this email because we received a password reset request for your account.
Click here to reset your password: {{ url('auth/password/reset/'.$token) }}
If you did not request a password reset, no further action is required.

这将发送给他们一个纯文本密码重置电子邮件,并将摆脱password.reset路由未发现错误。