注册

未匹配的标注

注册

介绍

当然了,在任何人使用你的应用程序之前,他们都需要创建一个帐户。感谢,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 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
发起讨论 查看所有版本


暂无话题~