laravel 5.0 中的自定义重置密码路由

Posted

技术标签:

【中文标题】laravel 5.0 中的自定义重置密码路由【英文标题】:Custom reset password routes in laravel 5.0 【发布时间】:2015-11-16 16:08:08 【问题描述】:

我想为密码重置制作一些自定义路由,这是我目前所做的:

首先,我创建了自己的路线

    Route::controllers([
            'auth' => 'Auth\AuthController',
            'password' => 'Auth\PasswordController',
        ]);

    Route::get('/olvide-mi-contrasena', [
        'as' => 'clubOlvide',
        'uses' => 'Auth\PasswordController@getEmail'
    ]);

    Route::post('/olvide-mi-contrasena', [
        'as' => 'clubPostOlvide',
        'uses' => 'Auth\PasswordController@postEmail'
    ]);

    Route::get('/restablecer-contrasena/token', [
        'as' => 'clubRestablecer',
        'uses' => 'Auth\PasswordController@getReset'
    ]);

    Route::post('/restablecer-contrasena/token', [
        'as' => 'clubPostRestablecer',
        'uses' => 'Auth\PasswordController@postReset'
    ]);

其次,我在 PasswordController 处覆盖了 ResetsPasswords 特征

        private $redirectTo = '/ingresar';
        public function getEmail()
        
            return view('Club.auth.password');
        

        public function getReset($token = null)
        
            if (is_null($token))
            
                throw new NotFoundHttpException;
            

            return view('Club.auth.reset')->with('token', $token);
        

三、改变视图处的动作

<form class="form-horizontal" role="form" method="POST" action=" route('clubPostRestablecer',['token' => $token]) ">

第四,我编辑了邮件配置

return [

    'driver' => 'smtp',
    'host' => 'smtp.gmail.com',
    'port' => 587,
    'from' => ['address' => 'soporte@domain.tld', 'name' => 'Support'],
    'encryption' => 'tls',
    'username' => 'googlemail@gmail.com',
    'password' => 'googlePassword',
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,
];

我测试了它...它发送重置链接,并且链接有效,它重置密码,但它使用默认路由,我希望它发送自定义路由,这就是我的意思:

已收到电子邮件(我将在链接中将真实令牌替换为单词令牌以使帖子更具可读性):

点击这里重置您的密码:

http://domain.tld/password/reset/token

我想要它是什么:

点击这里重置您的密码:

http://domain.tld/restablecer-contrasena/token

如果我将发送到password/reset/token 的令牌复制并粘贴到restablecer-contrasena/token 它可以工作,所以我想知道如何更改发送到电子邮件的链接?

【问题讨论】:

【参考方案1】:

知道了!密码重置邮件使用了一个模板,在config/auth.php中配置,参见:

当用户提交重置密码的请求时,他们将 接收带有指向 getReset 方法的链接的电子邮件 PasswordController 的(通常在 /password/reset 路由)。你 需要为此电子邮件创建一个视图 资源/视图/电子邮件/password.blade.php。该视图将收到 $token 变量,其中包含密码重置令牌以匹配 密码重置请求的用户。这是一个示例电子邮件视图 让你开始:

<!-- resources/views/emails/password.blade.php -->

Click here to reset your password:  route('clubPostRestablecer',['token' => $token]) 

【讨论】:

以上是关于laravel 5.0 中的自定义重置密码路由的主要内容,如果未能解决你的问题,请参考以下文章

设计:如何自定义重置密码令牌?

Firebase - 自定义重置密码登陆页面

Parse Server 上的自定义重置密码系统

创建自定义验证电子邮件页面 URL 和自定义重置密码页面 URL

Laravel 8 Jetstream如何在重置密码后将用户重定向到自定义路由

1.MySQL安装启动登录重置密码卸载