使用 Fortify Laravel 进行电子邮件确认

问题描述

我正在使用没有 Jetstream 的 Fortify 进行身份验证。我在注册时阅读了有关电子邮件验证的文档。但是当用户更改电子邮件地址时确认电子邮件地址呢?使用这个包是不是很难实现,或者它没有现成的功能,我必须从头开始做?

用户面板中可以更改用户名、电子邮件、电话和 img(我稍后会添加):

public function user_update(Request $request){

      $user = Auth::user();

      $user->name = $request->input('name')?$request->input('name'):Auth::user()->name;
      $user->email = $request->input('email')?$request->input('email'):Auth::user()->email;
      $user->phone = $request->input('phone')?$request->input('phone'):(Auth::user()->phone?Auth::user()->phone:NULL);

      $user->update();

      return redirect()->back();
    }

路线:

Route::post('/user-panel/user-update',[AdminController::class,'user_update'])->name('user_update');

解决方法

当您在 Features::emailVerification() 配置文件中启用 fortify.php 功能时,您可以访问 verified 中间件,该中间件确认 user 通过断言 {数据库中该 email_verified_at 的 {1}} 字段不为空。

因此,要触发 user 验证新电子邮件(如果他们更改了他们的电子邮件)的要求,您想要做的是将 user 字段的值更改为 email_verified_at,如果null 更改了他们的电子邮件地址。

可以自己写出这个逻辑,但是,Fortify 实际上提供了开箱即用的功能。在 user 文件夹中,您会看到一个名为 app/Actions/Fortify 的文件,该文件完全符合您的要求,并实现了整个电子邮件验证工作流程,包括向 UpdateUserProfileInformation.php 生成新的验证电子邮件。

对于您对默认 user 的结构所做的任何更改,您可能需要稍微更改此设置。

此后,您只需正确配置您的 user 即可使用它。

<form>

如果您不喜欢命名路由,您可以使用 <form action="{{ route('user-profile-information.update') }}" method="POST"> @csrf @method("PUT") </form> ,但最终结果是一样的。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...