首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel5.3-更改重置密码的auth路径

Laravel5.3-更改重置密码的auth路径
EN

Stack Overflow用户
提问于 2016-11-01 16:27:08
回答 2查看 4.5K关注 0票数 3

将auth的控制器移动到我的Http/Controllers/Admin/Auth目录,然后将auth的视图移动到admin/auth,并设置如下的路由文件:

代码语言:javascript
复制
Route::group(['middleware' => 'web', 'prefix' => 'admin', 'namespace' => 'Admin'], function() {
    Auth::routes();
});

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

NotFoundHttpException在RouteCollection.php第161行中:

我在控制器中修改了showResetForm方法,如下所示:

代码语言:javascript
复制
    public function showResetForm(Request $request, $token = null)
    {
        return view('admin.auth.passwords.reset')->with(
            ['token' => $token, 'email' => $request->email]
        );
    }

这是php artisan route:list上列出的路线

代码语言:javascript
复制
           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

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

EN

回答 2

Stack Overflow用户

发布于 2016-11-02 02:44:03

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

代码语言:javascript
复制
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.');
    }
}

接下来,在您的管理用户模型中,覆盖sendPasswordResetNotification函数的CanResetPassword特性,以使用您的上述类。

代码语言:javascript
复制
public function sendPasswordResetNotification($token) {
    $this->notify(new App\Notifications\AppResetPassword\ResetPasswordNotification($token));
}

希望这能帮到你。

票数 2
EN

Stack Overflow用户

发布于 2017-07-06 18:49:29

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

添加到您的User模型中:

代码语言:javascript
复制
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

代码语言:javascript
复制
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路由未找到错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40364287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档