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 来包含所需要的方法,对于大多数的应用程序而言,你并不需要修改这些控制器。