【问题标题】:How to password reset in Laravel 5.4 by e-mail如何通过电子邮件在 Laravel 5.4 中重置密码
【发布时间】:2018-03-13 17:45:54
【问题描述】:

当用户点击密码重置按钮时,如何将密码重置链接发送到用户电子邮件。

我有一个表格

<form action="/company/password/reset/" method="POST">
      {{ csrf_field() }}
      <div class="row">

        <div class="input-field col s12">

          <input placeholder="Enter your email" id="emails" type="email" class="validate" required name="email">
          <label for="emails">E-mail Address</label>
        </div>   
      </div>
      <p><button type="submit" method="post">SUBMIT</button></p>
    </form>

路线

Route::post('/password/company/reset/', 'PasswordResetController@company');

和控制器

public function company($email)
    {
        $company = $request->email;
    Password::sendResetLink(['email' => $company]);
    }

现在不工作,这是正确的方法吗??

我在 laravel 5.4 中找不到任何关于重置密码的教程

我得到这个错误:

用户必须实现 CanResetPassword 接口。

【问题讨论】:

    标签: php laravel laravel-5.4


    【解决方案1】:

    如果你的表单的action是/company/password/reset/,路由应该定义为

    Route::post('/password/company/reset/','PasswordResetController@company');
    

    可以在控制器中检索表单的输入,如下所示:

    public function company(Request $request) {
        $email = $request->email;
        ...
    

    documentation 明确表示:

    要开始使用,请验证您的 App\User 模型是否实现了 Illuminate\Contracts\Auth\CanResetPassword 合约。当然,框架自带的App\User模型已经实现了这个接口,并使用Illuminate\Auth\Passwords\CanResetPassword trait来包含实现接口所需的方法。

    由于你有一些自定义用户模型,你需要实现这个合约才能使用Password::sendResetLink

    【讨论】:

    • 谢谢。但是如何发送密码重置链接。
    • 密码::sendResetLink($company->email);显然这不起作用,有没有这样的方法可以发送重置链接?
    • 请阅读laravel.com/docs/5.4/passwords 需要满足许多条件才能使其正常工作。我建议检查日志并使用相关的错误消息更新问题。移动部件太多,无法做出有根据的猜测。用户可能不存在,电子邮件传输可能配置错误等。
    • 我收到此错误 - 用户必须实现 CanResetPassword 接口。
    • 亲爱的@ChrisMkp,我现在已经更新了你的问题,但你真的应该自己做。查看更新的答案如何解决问题。
    猜你喜欢
    • 1970-01-01
    • 2017-11-12
    • 2017-09-02
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 2018-05-24
    相关资源
    最近更新 更多