Confide - Laravel 的用户授权解决方案
说明
用户身份认证是应用开发基础设施中非常重要的一部分, 接下来介绍 Zizaco/confide, 一个专为 Laravel 定制的用户身份认证功能扩展包.
此扩展包让 Laravel 应用集成用户身份认证功能变得非常便捷, 在合适的情况下使用, 可以极大缩短开发周期.
功能清单
- 用户帐号确认 ( 通过发送激活邮件, 用户点击激活地址, 进行邮箱认证 );
- 密码重置功能 ( 通过发送找回密码邮件, 用户点击邮件里面的链接, 进行修改 );
- 提供简便的方法, 快速生成 登录, 注册, 和 密码重置 的表单;
- 快速生成 登录, 注册, 密码找回, 邮箱验证 等.. 的路由;
- 快速生成简单的控制器, 处理用户帐号的基本操作;
- 包含一些基本的用户功能帮助方法;
- 与 Laravel 自带的 Auth 和 Reminders 功能无缝兼容;
- 用户提交信息认证;
- 登录节流;
- 登录后自动跳转到之前的页面;
- 注册时候检查 username 和 email 字段的唯一;
安装
1. composer.json
"zizaco/confide": "~4.0@dev"
2. install
composer update
3. provider
修改 app/config/app.php 文件, 在 providers 数组里面添加:
'Zizaco\Confide\ServiceProvider',
4. aliase
修改 app/config/app.php 文件, 在 aliases 数组里面添加:
'Confide' => 'Zizaco\Confide\Facade',
5. 系统配置
Confide 会利用 config/auth.php
里面的值, 去生成 migration
, routes
, controller
.
Confide 会利用 config/mail.php
里面的值, 去发送用户认证, 和找回密码邮件.
6. 生成 Migration
php artisan confide:migration
会生成 <timestamp>_confide_setup_users_table.php
文件, 检查没问题后:
php artisan migrate
7. 修改 app/models/User.php 文件
直接替换为以下:
<?php
use Zizaco\Confide\ConfideUser;
use Zizaco\Confide\ConfideUserInterface;
class User extends Eloquent implements ConfideUserInterface
{
use ConfideUser;
}
8. 生成 Controller 和 Route
php artisan confide:controller
php artisan confide:routes
composer dump-autoload
9. 生成配置信息
php artisan config:publish zizaco/confide
此文件里面的参数会决定了 Confide 的一些行为, 请花点时间认真阅读里面的每一个选项.
总结
通过上面一系列的命令行, 和修改文件动作, 我们完成了 Confide 的简单安装和配置, 更多高级功能和用法, 请见 官方文档.
怎么访问?
打开 app/routes.php
文件, 会有类似以下的 Routes, 可以任意修改为你想要的:
// Confide routes
Route::get('users/create', 'UsersController@create');
Route::post('users', 'UsersController@store');
Route::get('users/login', 'UsersController@login');
Route::post('users/login', 'UsersController@doLogin');
Route::get('users/confirm/{code}', 'UsersController@confirm');
Route::get('users/forgot_password', 'UsersController@forgotPassword');
Route::post('users/forgot_password', 'UsersController@doForgotPassword');
Route::get('users/reset_password/{token}', 'UsersController@resetPassword');
Route::post('users/reset_password', 'UsersController@doResetPassword');
Route::get('users/logout', 'UsersController@logout');
Confide 和 Sentry
Sentry 是另一个 Laravel 的 用户身份认证
和 权限管理
的扩展包, TA 和 Confide 不同的地方, 是 Confide 只做 用户身份认证
, 权限管理
交给另一个扩展包 Entrust 来做.
用户身份认证
和 权限管理
分开来做有什么好处呢?
分开的话可以更灵活, 有些项目因为特殊的业务逻辑, 无法使用 Confide 的 用户身份认证
, 但是却需要用到 权限管理
, 如: PHPHub .
laravel-blog 就是一个简单的应用, 使用了 Confide 做 用户身份认证
, Entrust 做 权限管理
, 可以作为参考.
--- EOF ---
@lifesign 已修改. :rose: