注册
注册
介绍
当然了,在任何人使用你的应用程序之前,他们都需要创建一个帐户。感谢,Jetstream 提供了一个注册视图和相应的 action 来处理用户注册,这样你就可以专注于构建你的应用程序。
Actions
与 Jetstream 的大多数功能一样,进行注册请求而执行的后端逻辑可以在你的应用程序中的 action 类中找到。记住,actions 是负责执行与 Jetstream 或 Fortify 功能相关的单一任务的细粒度类。
具体来说,当用户注册账号时,将调用 App/Actions\Fortify\CreateNewUser
类。这个 action 负责验证传入的请求输入并创建用户。因此,你想对用户创建逻辑进行的任何自定义都应该在这个类中进行。这个 action 接收一个$input
数组,它包含了所有传入的请求输入。
密码验证规则
AppActions\Fortify\CreateNewUser
、AppActions\Fortify\ResetUserPassword
和AppActions\Fortify\UpdateUserPassword
操作都使用AppActions\Fortify\PasswordValidationRules
trait 。
你可能已经注意到了,App\Actions\Fortify\PasswordValidationRules
trait 利用了一个自定义的Laravel\Fortify\Rules\Password
验证规则对象。这个对象允许你轻松地自定义你的应用程序的密码要求。默认情况下,该规则要求密码长度至少为 8 个字符。但是,你可以使用以下方法来自定义密码的要求:
use Laravel\Fortify\Rules\Password;
// 要求至少有10个字符...
(new Password)->length(10)
// 要求至少有一个大写字母...
(new Password)->requireUppercase()
// 要求至少有一个数字字符...
(new Password)->requireNumeric()
// 要求至少有一个特殊字符...
(new Password)->requireSpecialCharacter()
当然,这些方法可以链式调用,以定义你的应用程序的密码验证规则:
(new Password)->length(10)->requireSpecialCharacter()
视图 / 页面
当使用 Livewire 技术栈时,注册视图使用 resources/views/auth/register.blade.php
Blade模板显示。当使用 Inertia 技术栈时,该视图使用 resources/js/Pages/Auth/Register.vue
模板显示。你添加到这些页面的任何其他字段将通过传递给App/Actions/Fortify/CreateNewUser
action 的$input
数组获取。
自定义注册视图
Laravel Jetstream 将自动为你的应用程序注册界面渲染相应的视图。但是,有时你可能想自定义视图 / 页面的渲染方式。
所有 Fortify 的身份验证视图渲染逻辑都可以使用 Laravel\Fortify\Fortify
类提供的相应方法进行自定义。通常,你应该在你应用程序的 App\Providers\JetstreamServiceProvider
类的 boot
方法中调用这个方法:
use Laravel\Fortify\Fortify;
/**
* 启动任何应用程序服务。
*/
public function boot(): void
{
Fortify::registerView(function () {
return view('auth.register');
});
}
自定义Inertia注册视图
如果你的应用程序使用的是 Inertia 技术栈,可以从你的视图自定义闭包中返回 Inertia 页面:
use Illuminate\Support\Facades\Route;
use Inertia\Inertia;
use Laravel\Fortify\Fortify;
Fortify::registerView(function () {
return Inertia::render('Auth/Register');
});
需要同意 服务条款/隐私政策
许多应用程序需要用户在注册期间同意其 服务条款/隐私政策。Jetstream 让你轻松地为自己的应用程序启用此功能,并提供一种使用 Markdown 编写这些文件的方便方法。
要启用,请在应用程序的 config/jetstream.php
配置文件中开启这个功能。
use Laravel\Fortify\Features;
'features' => [
Features::termsAndPrivacyPolicy(),
// Features::profilePhotos(),
// Features::api(),
// Features::teams(),
Features::accountDeletion(),
],
接下来,你可以通过修改应用程序的 resources/markdown/terms.md
和 resources/markdown/policy.md
文件来编写你的服务条款/隐私政策文档。
在注册期间,Jetstream 将自动要求用户同意这些文档。当用户点击链接查看文档时,Jetstream 将使用 Tailwind的排版插件 ,将Markdown渲染成格式美观的散文。
电子邮件验证
Laravel Jetstream 包含支持新注册的用户要求验证他们电子邮件地址的功能。但是,默认情况下不支持此功能。要启用此功能,你应该在你的应用程序的 config/fortify.php
配置文件的 features
配置项中取消相关条目的注释。
use Laravel\Fortify\Features;
'features' => [
Features::registration(),
Features::resetPasswords(),
Features::emailVerification(),
Features::updateProfileInformation(),
Features::updatePasswords(),
Features::twoFactorAuthentication(),
],
接下来,你应确保 App\Models\User
类实现了 Illuminate\Contracts\Auth\MustVerifyEmail
接口。这个接口已经导入到此模型中了:
use Illuminate\Contracts\Auth\MustVerifyEmail;
class User extends Authenticatable implements MustVerifyEmail
{
// ...
}
完成这两个设置步骤后,新注册的用户将收到一封电子邮件,提示验证他们的电子邮件地址所属权。
提示:Laravel 电子邮件
在使用电子邮件验证功能之前, 你应该确保你的 Laravel 应用程序配置好了 发送电子邮件 。否则, Laravel将无法发送电子邮件验证链接给你的应用程序的用户。
推荐文章: