注册

未匹配的标注

注册

介绍

当然了,在任何人使用你的应用程序之前,他们都需要创建一个帐户。感谢,Jetstream 提供了一个注册视图和相应的 action 来处理用户注册,这样你就可以专注于构建你的应用程序。

Screenshot of Authentication

Actions

与 Jetstream 的大多数功能一样,进行注册请求而执行的后端逻辑可以在你的应用程序中的 action 类中找到。记住,actions 是负责执行与 Jetstream 或 Fortify 功能相关的单一任务的细粒度类。

具体来说,当用户注册账号时,将调用 App/Actions\Fortify\CreateNewUser 类。这个 action 负责验证传入的请求输入并创建用户。因此,你想对用户创建逻辑进行的任何自定义都应该在这个类中进行。这个 action 接收一个$input数组,它包含了所有传入的请求输入。

密码验证规则

AppActions\Fortify\CreateNewUserAppActions\Fortify\ResetUserPasswordAppActions\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.mdresources/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将无法发送电子邮件验证链接给你的应用程序的用户。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~