首页 文章

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

提问于
浏览
0

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

我有一张表格

<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 回答

  • 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 Contract . 当然,框架中包含的App \ User模型已经实现了此接口,并使用Illuminate \ Auth \ Passwords \ CanResetPassword特性来包含实现接口所需的方法 .

    由于您有一些自定义用户模型,您需要实现此 Contract 才能使用 Password::sendResetLink

相关问题