Laravel 的用户认证系统
简介
想要快速起步? 在一个全新的 Laravel 应用中运行 php artisan make:auth
和 php artisan migrate
命令,然后可以用浏览器访问 http://your-app.dev/register
或者你在程序中定义的其他 url。这个两个简单的命令就可以搭建好整个认证系统的脚手架。
Laravel 中实现用户认证非常简单。实际上,几乎所有东西都已经为你配置好了。配置文件位于 config/auth.php
,其中包含了用于调整认证服务行为的、标注好注释的选项配置。
在其核心代码中,Laravel 的认证组件由 guards
和 providers
组成,Guard 定义了用户在每个请求中如何实现认证,例如,Laravel 通过 session
guard 来维护 Session 存储的状态和 Cookie。
Provider 定义了如何从持久化存储中获取用户信息,Laravel 底层支持通过 Eloquent 和数据库查询构建器两种方式来获取用户,如果需要的话,你还可以定义额外的 Provider。
如果看到这些名词觉得很困惑,大可不必太过担心,因为对绝大多数应用而言,只需使用默认认证配置即可,不需要做什么改动。
数据库注意事项
默认的 Laravel 在 app
文件夹中会含有 App\User
Eloquent 模型。这个模型将使用默认的 Eloquent 认证来驱动。如果你的应用程序没有使用 Eloquent,请选择使用 Laravel 查询构造器的 database
认证驱动。
为 App\User
模型创建数据库表结构时,确认密码字段最少必须 60 字符长。保持字段原定的 255 字符长是个好选择。
users
数据表中必须含有 nullable 、100 字符长的 remember_token
字段。当用户登录应用并勾选「记住我」时,这个字段将会被用来保存「记住我」 session 的令牌。
认证快速入门
Laravel 带有几个预设的认证控制器,它们被放置在 App\Http\Controllers\Auth
命名空间内,RegisterController
处理用户注册,LoginController
处理用户认证,ForgotPasswordController
处理重置密码的 e-mail 链接,ResetPasswordController
包含重置密码的逻辑。
这些控制器使用了 trait 来包含所需要的方法,对于大多数的应用程序而言,你并不需要修改这些控制器。