如何通过电子邮件在Laravel 5.4中重置密码

时间:2017-10-02 15:55:07

标签: php laravel laravel-5.4

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

我有一张表格

<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接口。

1 个答案:

答案 0 :(得分:1)

如果表单的操作为/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特征来包含实现接口所需的方法。

由于您有自定义用户模型,因此需要实施此合同才能使用Password::sendResetLink