(text,url`)Customizing RedirectsLaravel Fortify 是 Laravel 的一个前端无关的认证后端实现。Fortify 注册了实现 Laravel 所有认证功能所需的路由和控制器,包括登录、注册、密码重置、邮箱验证等。安装 Fortify 后,你可以运行 route:list Artisan 命令来查看 Fortify 注册的路由。
由于 Fortify 不提供自己的用户界面,它旨在与向 Fortify 注册的路由发出请求的您自己的用户界面配对使用。我们将在本文档的其余部分详细讨论如何向这些路由发出请求。
[!NOTE]
请记住,Fortify 是一个旨在帮助您快速开始实现 Laravel 认证功能的软件包。**您不必使用它。**您始终可以自由地通过查阅以下文档来手动与 Laravel 的认证服务进行交互:认证,密码重置,和 电子邮件验证 文档。
如前所述,Laravel Fortify 是一个不限前端的 Laravel 认证后端实现。Fortify 注册了实现 Laravel 所有认证功能所需的路由和控制器,包括登录、注册、密码重置、电子邮件验证等。
您无需使用 Fortify 即可使用 Laravel 的认证功能。 您始终可以手动与 Laravel 的认证服务交互,方法是遵循认证, 密码重置, and 电子邮件验证文档中提供的说明。
如果您是 Laravel 新用户,您可能希望了解我们的应用程序入门套件。 Laravel 的应用程序入门套件内部使用 Fortify 为您的应用程序提供认证脚手架 其中包括一个使用Tailwind CSS构建的用户界面。 这使您能够学习并熟悉 Laravel 的认证功能。
Laravel Fortify 本质上采用了我们应用程序启动套件的路由和控制器,并将它们作为一个不包含用户界面的包提供。这让你仍然能够快速构建应用程序认证层的后端实现,而无需受限于任何特定的前端偏好。
您可能想知道何时适合使用 Laravel Fortify。首先,如果您正在使用 Laravel 的某个应用 starter kit,您无需安装 Laravel Fortify 因为所有 Laravel 的应用 starter kit 都使用 Fortify 并且已经提供了完整的身份验证实现。
如果你没有使用应用程序启动工具包并且你的应用程序需要身份验证功能,你有两种选择:手动实现你的应用程序的身份验证功能或者使用 Laravel Fortify 来提供这些功能的后端实现。
如果您选择安装 Fortify,您的用户界面将向本文档中详细说明的 Fortify 认证路由发送请求,以认证和注册用户。
如果你选择手动与 Laravel 的认证服务交互而不是使用 Fortify,你可以通过查阅认证、密码重置以及电子邮件验证文档来实现。
一些开发者会对 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 配置文件包含一个 features 配置数组。此数组定义了 Fortify 默认会公开哪些后端路由/功能。我们建议您只启用以下功能,这些功能是大多数 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 如何返回我们的"login"视图. 请记住, Fortify 是一个无头认证库. 如果您希望获得一个已为您完成的 Laravel 认证功能前端实现, 您应该使用一个应用程序入门套件.
所有认证视图的渲染逻辑都可以使用通过 Laravel\Fortify\Fortify 类提供的相应方法进行自定义. 通常, 您应该从应用程序的 App\Providers\FortifyServiceProvider 类的 boot 方法中调用此方法. Fortify 将负责定义返回此视图的 /login 路由:
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。email / username 字段的名称应该与 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。通常,此方法应从你的 FortifyServiceProvider 的 boot 方法中调用:
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.limiters.login 配置选项指定您自己的 限速器。 当然,此配置选项位于您的应用程序的 config/fortify.php 配置文件中。
[!注意]
结合使用限流、双因素认证以及外部 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) 生成的,该密码可以从任何兼容 TOTP 的移动认证应用程序 (例如 Google Authenticator) 中获取。
在开始之前,你应该首先确保你的应用程序的 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;
}接下来,你应该在你的应用程序中构建一个屏幕,用户可以在其中管理他们的双因素认证设置。该屏幕应该允许用户启用和禁用双因素认证,以及重新生成他们的双因素认证恢复码。
默认情况下,
features数组的fortify配置文件会指示 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接下来,您应该显示双因素认证二维码,供用户扫描到他们的认证器应用程序中。如果您正在使用 Blade 渲染应用程序的前端,您可以使用用户实例上可用的 twoFactorQrCodeSvg 方法检索 QR 码 SVG:
$request->user()->twoFactorQrCodeSvg();如果你正在构建一个由 JavaScript 提供支持的前端,你可以向 /user/two-factor-qr-code 端点发起一个 XHR GET 请求,以获取用户的双因素认证二维码。此端点将返回一个包含 svg 键的 JSON 对象。
除了显示用户的两步认证二维码之外,你应该提供一个文本输入框,用户可以在其中输入一个有效的认证码,以“确认”他们的两步认证配置。这个代码应该通过 POST 请求发送到由 Fortify 定义的 /user/confirmed-two-factor-authentication 端点,提供给 Laravel 应用程序。
如果请求成功,用户将被重定向回之前的 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 响应将包含一个 JSON 对象,该对象具有一个 two_factor 布尔属性。您应该检查此值,以了解是否应该重定向到您的应用程序的双因素认证挑战界面。
要开始实现双因子认证功能,我们需要指示 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 字段,或一个包含用户一个恢复码的 recovery_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 会将用户重定向到通过 home 配置选项配置的 URI,该选项位于你应用的 fortify 配置文件中。如果请求是 XHR 请求,则会返回 201 HTTP 响应。
如果请求不成功,用户将被重定向回注册屏幕,并且验证错误将通过共享的 $errors Blade 模板变量提供给您。或者,如果是 XHR 请求,验证错误将以 422 HTTP 响应返回。
用户验证和创建过程可以通过修改 App\Actions\Fortify\CreateNewUser 操作进行自定义,该操作是在您安装 Laravel 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::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'). "email" 字段/数据库列的名称应该与你的应用程序的 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 类。通常,您应该从 boot 方法中调用此方法,该方法位于您的应用 App\Providers\FortifyServiceProvider 类中:
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 模板中添加一个按钮,该按钮会触发一个 POST 请求到 /email/verification-notification 端点。当此端点收到请求时,新的验证邮件链接将发送给用户,允许用户在之前的链接被意外删除或丢失时获取新的验证链接。
如果重新发送验证链接邮件的请求成功,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 响应返回。