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 ---

摈弃世俗浮躁,追求技术精湛
本帖已被设为精华帖!
Summer
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9
Summer

@lifesign 已修改. :rose:

9年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!