问题描述
我正在使用没有 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>
,但最终结果是一样的。