Laravel 的用户认证系统
简介
想要快点开始? 只需在新的 Laravel 应用上运行 php artisan make:auth
和 php artisan migrate
命令。然后可以用浏览器访问 http://your-app.dev/register
或者你在程序中定义的其它 URL 。这两个命令就可以构建好整个认证系统。
Laravel 中实现用户认证非常简单。实际上,几乎所有东西都已经为你配置好了。其配置文件位于 config/auth.php
,其中包含了用于调整认证服务行为的注释清晰的选项配置。
其核心是由 Laravel 的认证组件的「看守器」和「提供器」组成。看守器定义了该如何认证每个请求中用户。例如,Laravel 自带的 session
看守器会使用 session 存储和 cookies 来维护状态。
提供器中定义了该如何从持久化的存储数据中检索用户。Laravel 自带支持使用 Eloquent 和数据库查询构造器来检索用户。当然,你可以根据需要自定义其他提供器。
不过对大多数应用而言,可能永远都不需要修改默认身份认证配置。
数据库注意事项
默认情况下,Laravel 在 app
目录中包含了一个 Eloquent 模型 App\User
。这个模型和默认的 Eloquent 认证驱动一起使用。如果你的应用不使用 Eloquent,也可以使用 Laravel 查询构造器的 database
认证驱动。
为 App\User
模型创建数据库表结构时,确保密码字段长度至少为 60 个字符以及默认字符串列长度为 255 个字符。
此外,你要验证的用户(或等效的)表要包含一个可空的、长度为 100 的字符串 remember_token
。这个字段将用于存储当用户登录应用并勾选「记住我」时的令牌。
快速认证
Laravel 自带几个预构建的认证控制器,它们被放置在 App\Http\Controllers\Auth
命名空间内。RegisterController
处理新用户注册,LoginController
处理用户认证,ForgotPasswordController
处理用于重置密码的邮件链接,而 ResetPasswordController
包含重置密码的逻辑。这些控制器都使用 trait 来引入所必要的方法。对于大多数应用而言,你根本不需要修改这些控制器。
路由
Laravel 提供了一个简单的命令来快速生成身份验证所需的路由和视图:
php artisan make:auth
该命令最好在新的应用下使用,它会生成布局、注册和登录视图以及所有的认证接口的路由。同时它还会生成 HomeController
来处理应用的登录请求。
视图
php artisan make:auth
命令会在 resources/views/auth
目录创建所有认证需要的视图。
同时,make:auth
命令还创建了 resources/views/layouts
目录,该目录包含了应用的基本布局视图。所有这些视图都是用 Bootstrap CSS 框架,你也可以根据需要对其自定义。
认证
现在你已经为自带的认证控制器设置好了路由和视图,可以为应用注册和验证新用户了。你可以简单地在浏览器中访问应用,因为身份验证控制器已包含了(通过 traits)验证现有 用户并将新用户存储在数据库中的逻辑了。
自定义路径
当用户成功通过身份认证后,他们会被重定向到 /home
URI。你可以通过在 LoginController
、RegisterController
和 ResetPasswordController
中设置 redirectTo
属性来自定义重定向的位置:
protected $redirectTo = '/';
如果重定向路径需要自定义生成逻辑,你可以定义 redirectTo
方法来代替 redirectTo
属性:
protected function redirectTo()
{
return '/path';
}
redirectTo
方法优先于 redirectTo
属性。
自定义用户名
Laravel 默认使用 email
字段来认证。如果你想用其他字段认证,可以在 LoginController
里面定义一个 username
方法:
public function username()
{
return 'username';
}