Appearance
Laravel Fortify
简介
Laravel Fortify 是一个与前端无关的 Laravel 认证后端实现。Fortify 注册了实现 Laravel 所有认证功能所需的路由和控制器,包括登录、注册、密码重置、邮箱验证等。安装 Fortify 后,您可以运行 route:list Artisan 命令来查看 Fortify 注册的路由。
由于 Fortify 不提供自己的用户界面,它旨在与您自己的用户界面配对使用,您的界面会向它注册的路由发出请求。我们将在本文档的其余部分详细讨论如何向这些路由发出请求。
NOTE
请记住,Fortify 是一个旨在为您实现 Laravel 认证功能提供起点的包。您不是必须使用它。您始终可以按照 认证、密码重置 和 邮箱验证 文档中的说明手动与 Laravel 的认证服务交互。
什么是 Fortify?
如前所述,Laravel Fortify 是一个与前端无关的 Laravel 认证后端实现。Fortify 注册了实现 Laravel 所有认证功能所需的路由和控制器,包括登录、注册、密码重置、邮箱验证等。
您不必使用 Fortify 来使用 Laravel 的认证功能。您始终可以按照 认证、密码重置 和 邮箱验证 文档中的说明手动与 Laravel 的认证服务交互。
如果您是 Laravel 新手,在尝试使用 Laravel Fortify 之前,您可能希望探索 Laravel Breeze 应用程序启动套件。Laravel Breeze 为您的应用程序提供了一个认证脚手架,包括使用 Tailwind CSS 构建的用户界面。与 Fortify 不同,Breeze 将其路由和控制器直接发布到您的应用程序中。这允许您在允许 Laravel Fortify 为您实现这些功能之前研究和熟悉 Laravel 的认证功能。
Laravel Fortify 本质上是将 Laravel Breeze 的路由和控制器作为一个不包含用户界面的包提供。这允许您仍然快速搭建应用程序认证层的后端实现,而不会被绑定到任何特定的前端观点。
何时使用 Fortify?
您可能想知道何时适合使用 Laravel Fortify。首先,如果您正在使用 Laravel 的 应用程序启动套件 之一,则不需要安装 Laravel Fortify,因为所有 Laravel 应用程序启动套件都已经提供了完整的认证实现。
如果您没有使用应用程序启动套件,并且您的应用程序需要认证功能,您有两个选择:手动实现应用程序的认证功能,或使用 Laravel Fortify 提供这些功能的后端实现。
如果您选择安装 Fortify,您的用户界面将向本文档中详述的 Fortify 认证路由发出请求,以便认证和注册用户。
如果您选择手动与 Laravel 的认证服务交互而不是使用 Fortify,您可以按照 认证、密码重置 和 邮箱验证 文档中的说明进行操作。
Laravel Fortify 和 Laravel Sanctum
一些开发人员对 Laravel Sanctum 和 Laravel Fortify 之间的区别感到困惑。因为这两个包解决了两个不同但相关的问题,Laravel Fortify 和 Laravel Sanctum 并不是互斥或竞争的包。
Laravel Sanctum 只关注管理 API 令牌和使用会话 cookie 或令牌认证现有用户。Sanctum 不提供任何处理用户注册、密码重置等的路由。
如果您正在尝试为提供 API 或作为单页应用程序后端的应用程序手动构建认证层,您完全有可能同时使用 Laravel Fortify(用于用户注册、密码重置等)和 Laravel Sanctum(API 令牌管理、会话认证)。
安装
要开始使用,请使用 Composer 包管理器安装 Fortify:
composer require laravel/fortify接下来,使用 fortify:install Artisan 命令发布 Fortify 的资源:
php artisan fortify:install此命令将 Fortify 的操作发布到您的 app/Actions 目录中,如果该目录不存在则会创建该目录。此外,FortifyServiceProvider、配置文件和所有必需的数据库迁移将被发布。
接下来,您应该迁移您的数据库:
php artisan migrateFortify 功能
fortify 配置文件包含一个 features 配置数组。此数组定义了 Fortify 默认启用的后端路由/功能。如果您没有将 Fortify 与 Laravel Jetstream 一起使用,我们建议您只启用以下功能,这些是大多数 Laravel 应用程序提供的基本认证功能:
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
],禁用视图
默认情况下,Fortify 定义了返回视图的路由,例如登录屏幕或注册屏幕。但是,如果您正在构建一个由 JavaScript 驱动的单页应用程序,您可能不需要这些路由。因此,您可以通过将应用程序的 config/fortify.php 配置文件中的 views 配置值设置为 false 来完全禁用这些路由:
'views' => false,禁用视图和密码重置
如果您选择禁用 Fortify 的视图,并且您将为应用程序实现密码重置功能,您仍应定义一个名为 password.reset 的路由,负责显示应用程序的 "重置密码" 视图。这是必需的,因为 Laravel 的 Illuminate\Auth\Notifications\ResetPassword 通知将通过名为 password.reset 的命名路由生成密码重置 URL。
认证
要开始,我们需要指示 Fortify 如何返回我们的 "登录" 视图。请记住,Fortify 是一个无头认证库。如果您希望获得已经完成的 Laravel 认证功能的前端实现,您应该使用 应用程序启动套件。
所有认证视图的渲染逻辑都可以使用 Laravel\Fortify\Fortify 类提供的适当方法进行自定义。通常,您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法:
use Laravel\Fortify\Fortify;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::loginView(function () {
return view('auth.login');
});
// ...
}您的登录模板应包含一个表单,该表单向 /login 发出 POST 请求。/login 端点期望一个字符串 email / username 和一个 password。用户名字段的名称应与应用程序的 config/fortify.php 配置文件中的 username 值匹配。此外,还可以提供一个布尔 remember 字段,指示用户希望使用 Laravel 提供的 "记住我" 功能。
如果登录尝试成功,Fortify 将重定向您到应用程序的 fortify 配置文件中的 home 配置选项配置的 URI。如果登录请求是 XHR 请求,将返回 200 HTTP 响应。
如果请求不成功,用户将被重定向回登录屏幕,并且可以通过共享的 $errors Blade 模板变量访问验证错误。或者,在 XHR 请求的情况下,验证错误将与 422 HTTP 响应一起返回。
自定义用户认证
Fortify 将根据提供的凭据和应用程序配置的认证守卫自动检索和认证用户。但是,您有时可能希望完全自定义登录凭据的认证方式以及检索用户的方式。幸运的是,Fortify 允许您使用 Fortify::authenticateUsing 方法轻松实现这一点。
此方法接受一个接收传入 HTTP 请求的闭包。该闭包负责验证附加到请求的登录凭据,并返回相关的用户实例。如果凭据无效或找不到用户,闭包应返回 null 或 false。通常,此方法应从 boot 方法的 FortifyServiceProvider 中调用:
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Laravel\Fortify\Fortify;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::authenticateUsing(function (Request $request) {
$user = User::where('email', $request->email)->first();
if ($user &&
Hash::check($request->password, $user->password)) {
return $user;
}
});
// ...
}认证守卫
您可以在应用程序的 fortify 配置文件中自定义 Fortify 使用的认证守卫。但是,您应确保配置的守卫是 Illuminate\Contracts\Auth\StatefulGuard 的实现。如果您正在尝试使用 Laravel Fortify 来认证 SPA,您应该将 Laravel 的默认 web 守卫与 Laravel Sanctum 结合使用。
自定义认证管道
Laravel Fortify 通过一系列可调用的类来认证登录请求。如果您愿意,您可以定义一个自定义的类管道,登录请求应该通过该管道。每个类都应该有一个 __invoke 方法,该方法接收传入的 Illuminate\Http\Request 实例,以及类似 中间件 的 $next 变量,该变量在调用以传递请求到管道中的下一个类时被调用。
要定义您的自定义管道,您可以使用 Fortify::authenticateThrough 方法。此方法接受一个闭包,该闭包应返回登录请求应该通过的类数组。通常,此方法应从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用。
以下示例包含默认管道定义,您可以将其用作自定义修改的起点:
use Laravel\Fortify\Actions\AttemptToAuthenticate;
use Laravel\Fortify\Actions\CanonicalizeUsername;
use Laravel\Fortify\Actions\EnsureLoginIsNotThrottled;
use Laravel\Fortify\Actions\PrepareAuthenticatedSession;
use Laravel\Fortify\Actions\RedirectIfTwoFactorAuthenticatable;
use Laravel\Fortify\Features;
use Laravel\Fortify\Fortify;
use Illuminate\Http\Request;
Fortify::authenticateThrough(function (Request $request) {
return array_filter([
config('fortify.limiters.login') ? null : EnsureLoginIsNotThrottled::class,
config('fortify.lowercase_usernames') ? CanonicalizeUsername::class : null,
Features::enabled(Features::twoFactorAuthentication()) ? RedirectIfTwoFactorAuthenticatable::class : null,
AttemptToAuthenticate::class,
PrepareAuthenticatedSession::class,
]);
});认证限制
默认情况下,Fortify 会使用 EnsureLoginIsNotThrottled 中间件对认证尝试进行限制。此中间件对唯一的用户名和 IP 地址组合进行限制。
一些应用程序可能需要不同的认证尝试限制方式,例如仅按 IP 地址限制。因此,Fortify 允许您通过应用程序的 fortify 配置文件中的 fortify.limiters.login 配置选项指定自己的 速率限制器。当然,此配置选项位于应用程序的 config/fortify.php 配置文件中。
NOTE
结合使用限制、双因素认证 和外部 Web 应用程序防火墙 (WAF) 将为您的合法应用程序用户提供最强大的防御。
自定义重定向
如果登录尝试成功,Fortify 将重定向您到应用程序的 fortify 配置文件中的 home 配置选项配置的 URI。如果登录请求是 XHR 请求,将返回 200 HTTP 响应。用户从应用程序注销后,用户将被重定向到 / URI。
如果您需要对此行为进行高级自定义,您可以将 LoginResponse 和 LogoutResponse 合约的实现绑定到 Laravel 服务容器 中。通常,这应该在应用程序的 App\Providers\FortifyServiceProvider 类的 register 方法中完成:
use Laravel\Fortify\Contracts\LogoutResponse;
/**
* Register any application services.
*/
public function register(): void
{
$this->app->instance(LogoutResponse::class, new class implements LogoutResponse {
public function toResponse($request)
{
return redirect('/');
}
});
}双因素认证
当 Fortify 的双因素认证功能启用时,用户在认证过程中需要输入六位数字令牌。此令牌是使用任何兼容 TOTP 的移动身份验证应用程序(如 Google Authenticator)生成的基于时间的一次性密码(TOTP)。
开始之前,您应首先确保应用程序的 App\Models\User 模型使用了 Laravel\Fortify\TwoFactorAuthenticatable trait:
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Fortify\TwoFactorAuthenticatable;
class User extends Authenticatable
{
use Notifiable, TwoFactorAuthenticatable;
}接下来,您应在应用程序中构建一个屏幕,允许用户管理他们的双因素认证设置。此屏幕应允许用户启用和禁用双因素认证,以及重新生成他们的双因素认证恢复代码。
默认情况下,
fortify配置文件的features数组指示 Fortify 的双因素认证设置需要密码确认才能进行修改。因此,在继续之前,您的应用程序应该实现 Fortify 的 密码确认 功能。
启用双因素认证
要开始启用双因素认证,您的应用程序应向 Fortify 定义的 /user/two-factor-authentication 端点发出 POST 请求。如果请求成功,用户将被重定向回上一个 URL,并设置 status 会话变量为 two-factor-authentication-enabled。您可以在模板中检测此 status 会话变量,以显示适当的成功消息。如果请求是 XHR 请求,将返回 200 HTTP 响应。
选择启用双因素认证后,用户仍需要通过提供有效的双因素认证代码来 "确认" 他们的双因素认证配置。因此,您的 "成功" 消息应指示仍需要完成双因素认证确认:
@if (session('status') == 'two-factor-authentication-enabled')
<div class="mb-4 font-medium text-sm">
Please finish configuring two factor authentication below.
</div>
@endif接下来,您应显示用户的双因素认证 QR 码,以便他们可以将其扫描到他们的身份验证器应用程序中。如果您使用 Blade 渲染应用程序的前端,您可以使用用户实例上的 twoFactorQrCodeSvg 方法检索 QR 码 SVG:
$request->user()->twoFactorQrCodeSvg();如果您正在构建由 JavaScript 驱动的前端,您可以向 /user/two-factor-qr-code 端点发出 XHR GET 请求,以检索用户的双因素认证 QR 码。此端点将返回一个包含 svg 键的 JSON 对象。
确认双因素认证
除了显示用户的双因素认证 QR 码之外,您还应提供一个文本输入框,允许用户提供有效的身份验证代码来 "确认" 他们的双因素认证配置。此代码应通过 POST 请求发送到 Fortify 定义的 /user/confirmed-two-factor-authentication 端点。
如果请求成功,用户将被重定向回上一个 URL,并设置 status 会话变量为 two-factor-authentication-confirmed:
@if (session('status') == 'two-factor-authentication-confirmed')
<div class="mb-4 font-medium text-sm">
Two factor authentication confirmed and enabled successfully.
</div>
@endif如果双因素认证确认端点的请求是通过 XHR 请求发出的,将返回 200 HTTP 响应。
显示恢复代码
您还应显示用户的双因素恢复代码。这些恢复代码允许用户在失去对移动设备的访问权限时进行身份验证。如果您使用 Blade 渲染应用程序的前端,您可以通过经过身份验证的用户实例访问恢复代码:
(array) $request->user()->recoveryCodes()如果您正在构建由 JavaScript 驱动的前端,您可以向 /user/two-factor-recovery-codes 端点发出 XHR GET 请求。此端点将返回一个包含用户恢复代码的 JSON 数组。
要重新生成用户的恢复代码,您的应用程序应向 /user/two-factor-recovery-codes 端点发出 POST 请求。
使用双因素认证进行认证
在认证过程中,Fortify 将自动将用户重定向到应用程序的双因素认证挑战屏幕。但是,如果您的应用程序正在进行 XHR 登录请求,返回的 JSON 响应将包含一个具有 two_factor 布尔属性的 JSON 对象。您应检查此值,以确定是否应重定向到应用程序的双因素认证挑战屏幕。
要开始实现双因素认证功能,我们需要指示 Fortify 如何返回我们的双因素认证挑战视图。所有 Fortify 的认证视图渲染逻辑都可以使用 Laravel\Fortify\Fortify 类提供的适当方法进行自定义。通常,您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法:
use Laravel\Fortify\Fortify;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::twoFactorChallengeView(function () {
return view('auth.two-factor-challenge');
});
// ...
}Fortify 将负责定义返回此视图的 /two-factor-challenge 路由。您的 two-factor-challenge 模板应包含一个表单,该表单向 /two-factor-challenge 端点发出 POST 请求。/two-factor-challenge 操作期望一个包含有效 TOTP 令牌或用户的恢复代码之一的 code 字段。
如果登录尝试成功,Fortify 将重定向用户到应用程序的 fortify 配置文件中的 home 配置选项配置的 URI。如果登录请求是 XHR 请求,将返回 204 HTTP 响应。
如果请求不成功,用户将被重定向回双因素挑战屏幕,并且可以通过共享的 $errors Blade 模板变量访问验证错误。或者,在 XHR 请求的情况下,验证错误将与 422 HTTP 响应一起返回。
禁用双因素认证
要禁用双因素认证,您的应用程序应向 /user/two-factor-authentication 端点发出 DELETE 请求。请记住,Fortify 的双因素认证端点需要 密码确认 才能调用。
注册
要开始实现我们应用程序的注册功能,我们需要指示 Fortify 如何返回我们的 "注册" 视图。请记住,Fortify 是一个无头认证库。如果您希望获得已经完成的 Laravel 认证功能的前端实现,您应该使用 应用程序启动套件。
所有 Fortify 的视图渲染逻辑都可以使用 Laravel\Fortify\Fortify 类提供的适当方法进行自定义。通常,您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法:
use Laravel\Fortify\Fortify;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::registerView(function () {
return view('auth.register');
});
// ...
}Fortify 将负责定义返回此视图的 /register 路由。您的 register 模板应包含一个表单,该表单向 Fortify 定义的 /register 端点发出 POST 请求。
/register 端点期望一个字符串 name、字符串电子邮件地址/用户名、password 和 password_confirmation 字段。用户名字段的名称应与应用程序的 fortify 配置文件中的 username 配置值匹配。
如果注册尝试成功,Fortify 将重定向用户到应用程序的 fortify 配置文件中的 home 配置选项配置的 URI。如果请求是 XHR 请求,将返回 201 HTTP 响应。
如果请求不成功,用户将被重定向回注册屏幕,并且可以通过共享的 $errors Blade 模板变量访问验证错误。或者,在 XHR 请求的情况下,验证错误将与 422 HTTP 响应一起返回。
自定义注册
用户验证和创建过程可以通过修改安装 Laravel Fortify 时生成的 App\Actions\Fortify\CreateNewUser 操作来自定义。
密码重置
请求密码重置链接
要开始实现我们应用程序的密码重置功能,我们需要指示 Fortify 如何返回我们的 "忘记密码" 视图。请记住,Fortify 是一个无头认证库。如果您希望获得已经完成的 Laravel 认证功能的前端实现,您应该使用 应用程序启动套件。
所有 Fortify 的视图渲染逻辑都可以使用 Laravel\Fortify\Fortify 类提供的适当方法进行自定义。通常,您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法:
use Laravel\Fortify\Fortify;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::requestPasswordResetLinkView(function () {
return view('auth.forgot-password');
});
// ...
}Fortify 将负责定义返回此视图的 /forgot-password 端点。您的 forgot-password 模板应包含一个表单,该表单向 /forgot-password 端点发出 POST 请求。
/forgot-password 端点期望一个字符串 email 字段。此字段/数据库列的名称应与应用程序的 fortify 配置文件中的 email 配置值匹配。
处理密码重置链接请求响应
如果密码重置链接请求成功,Fortify 将重定向用户回 /forgot-password 端点,并向用户发送一封电子邮件,其中包含他们可以用来重置密码的安全链接。如果请求是 XHR 请求,将返回 200 HTTP 响应。
重定向回 /forgot-password 端点后,status 会话变量可用于显示密码重置链接请求尝试的状态。
$status 会话变量的值将与应用程序的 passwords 语言文件 中定义的翻译字符串之一匹配。如果您想要自定义此值并且尚未发布 Laravel 的语言文件,您可以通过 lang:publish Artisan 命令进行操作:
@if (session('status'))
<div class="mb-4 font-medium text-sm text-green-600">
{{ session('status') }}
</div>
@endif如果请求不成功,用户将被重定向回请求密码重置链接屏幕,并且可以通过共享的 $errors Blade 模板变量访问验证错误。或者,在 XHR 请求的情况下,验证错误将与 422 HTTP 响应一起返回。
重置密码
要完成实现我们应用程序的密码重置功能,我们需要指示 Fortify 如何返回我们的 "重置密码" 视图。
所有 Fortify 的视图渲染逻辑都可以使用 Laravel\Fortify\Fortify 类提供的适当方法进行自定义。通常,您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法:
use Laravel\Fortify\Fortify;
use Illuminate\Http\Request;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::resetPasswordView(function (Request $request) {
return view('auth.reset-password', ['request' => $request]);
});
// ...
}Fortify 将负责定义显示此视图的路由。您的 reset-password 模板应包含一个表单,该表单向 /reset-password 发出 POST 请求。
/reset-password 端点期望一个字符串 email 字段、一个 password 字段、一个 password_confirmation 字段和一个名为 token 的隐藏字段,其值为 request()->route('token')。"电子邮件" 字段/数据库列的名称应与应用程序的 fortify 配置文件中的 email 配置值匹配。
处理密码重置响应
如果密码重置请求成功,Fortify 将重定向回 /login 路由,以便用户可以使用他们的新密码登录。此外,将设置 status 会话变量,以便您可以在登录屏幕上显示重置的成功状态:
@if (session('status'))
<div class="mb-4 font-medium text-sm text-green-600">
{{ session('status') }}
</div>
@endif如果请求是 XHR 请求,将返回 200 HTTP 响应。
如果请求不成功,用户将被重定向回重置密码屏幕,并且可以通过共享的 $errors Blade 模板变量访问验证错误。或者,在 XHR 请求的情况下,验证错误将与 422 HTTP 响应一起返回。
自定义密码重置
密码重置过程可以通过修改安装 Laravel Fortify 时生成的 App\Actions\ResetUserPassword 操作来自定义。
邮箱验证
注册后,您可能希望用户在继续访问您的应用程序之前验证他们的电子邮件地址。要开始,请确保 fortify 配置文件的 features 数组中启用了 emailVerification 功能。接下来,您应确保您的 App\Models\User 类实现了 Illuminate\Contracts\Auth\MustVerifyEmail 接口。
一旦完成这两个设置步骤,新注册的用户将收到一封电子邮件,提示他们验证他们的电子邮件地址所有权。但是,我们需要告诉 Fortify 如何显示电子邮件验证屏幕,该屏幕通知用户他们需要点击电子邮件中的验证链接。
所有 Fortify 的视图渲染逻辑都可以使用 Laravel\Fortify\Fortify 类提供的适当方法进行自定义。通常,您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法:
use Laravel\Fortify\Fortify;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::verifyEmailView(function () {
return view('auth.verify-email');
});
// ...
}Fortify 将负责定义当用户被 Laravel 的内置 verified 中间件重定向到 /email/verify 端点时显示此视图的路由。
您的 verify-email 模板应包含一条信息性消息,指示用户点击已发送到他们电子邮件地址的电子邮件验证链接。
重新发送邮箱验证链接
如果您愿意,您可以向应用程序的 verify-email 模板添加一个按钮,该按钮触发对 /email/verification-notification 端点的 POST 请求。当此端点接收到请求时,将向用户发送一封新的验证电子邮件链接,允许用户在丢失或意外删除先前链接的情况下获取新的验证链接。
如果重新发送验证链接电子邮件的请求成功,Fortify 将重定向用户回 /email/verify 端点,并带有 status 会话变量,允许您向用户显示一条信息性消息,通知他们操作成功。如果请求是 XHR 请求,将返回 202 HTTP 响应:
@if (session('status') == 'verification-link-sent')
<div class="mb-4 font-medium text-sm text-green-600">
A new email verification link has been emailed to you!
</div>
@endif保护路由
要指定路由或一组路由需要用户已验证他们的电子邮件地址,您应该将 Laravel 的内置 verified 中间件附加到该路由上。verified 中间件别名已由 Laravel 自动注册,并充当 Illuminate\Auth\Middleware\EnsureEmailIsVerified 中间件的别名:
Route::get('/dashboard', function () {
// ...
})->middleware(['verified']);密码确认
在构建应用程序时,您有时可能会有需要用户确认其密码才能执行操作的操作。通常,这些路由受 Laravel 的内置 password.confirm 中间件保护。
要开始实现密码确认功能,我们需要指示 Fortify 如何返回我们应用程序的 "密码确认" 视图。请记住,Fortify 是一个无头认证库。如果您希望获得已经完成的 Laravel 认证功能的前端实现,您应该使用 应用程序启动套件。
所有 Fortify 的视图渲染逻辑都可以使用 Laravel\Fortify\Fortify 类提供的适当方法进行自定义。通常,您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法:
use Laravel\Fortify\Fortify;
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Fortify::confirmPasswordView(function () {
return view('auth.confirm-password');
});
// ...
}Fortify 将负责定义返回此视图的 /user/confirm-password 端点。您的 confirm-password 模板应包含一个表单,该表单向 /user/confirm-password 端点发出 POST 请求。/user/confirm-password 端点期望一个包含用户当前密码的 password 字段。
如果密码与用户的当前密码匹配,Fortify 将重定向用户到他们尝试访问的路由。如果请求是 XHR 请求,将返回 201 HTTP 响应。
如果请求不成功,用户将被重定向回确认密码屏幕,并且可以通过共享的 $errors Blade 模板变量访问验证错误。或者,在 XHR 请求的情况下,验证错误将与 422 HTTP 响应一起返回。
