Zizaco/Entrust 是 Laravel 下 用户权限系统 的解决方案, 配合 用户身份认证 扩展包 Zizaco/confide 使用, 可以快速搭建出一套具备高扩展性的用户系统.
Confide, Entrust 和 Sentry
首先两个概念分清楚:
用户身份认证 Authentication - 处理用户登录, 退出, 注册, 找回密码, 重置密码, 用户邮箱认证 etc..
权限管理 Authorization - 负责 用户 与 权限, 用户组 三者之间的对应, 以及管理.
下面是这几个 Package 的简单区别:
Sentry = 用户身份认证 + 权限管理;
Zizaco/Entrust = 权限管理;
Zizaco/confide = 用户身份认证;
安装Laravel 5 Entrust,只需将以下内容添加到composer.json中即可。 然后运行composer update:
"zizaco/entrust": "5.2.x-dev"
打开你的config / app.php并将以下内容添加到providers数组中:
Zizaco\Entrust\EntrustServiceProvider::class,
在同一个config / app.php中,并将以下内容添加到liases数组中:
'Entrust' => Zizaco\Entrust\EntrustFacade::class,
运行以下命令发布配置文件config / entrust.php:
php artisan vendor:publish
打开你的config/auth.php添加以下内容:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => namespace \App\Http\Model\UserName::class, // 根据个人实际路径填写
'table' => 'user',
],
],
如果你想使用中间件(需要laravel 5.1或更高版本)添加以下内容(app/Http/Kernel.php):
'role' => \Zizaco\Entrust\Middleware\EntrustRole::class,
'permission' => \Zizaco\Entrust\Middleware\EntrustPermission::class,
'ability' => \Zizaco\Entrust\Middleware\EntrustAbility::class,
配置
在设置属性值config/auth.php这些值将用于 Entrust是指正确的用户表和模型。
来进一步自定义表名和模型命名空间、编辑config/entrust.php。
用户与角色
现在生成 Entrust 迁移:
php artisan entrust:migration
它将生成<timestamp> _entrust_setup_tables.php迁移。您现在可以使用artisan migrate命令运行它:
php artisan migrate
迁移后,将出现四张新表:
roles - 存储角色记录
permissions - 存储权限记录
role_user-存储角色和用户之间的多对多关系
permission_role-存储角色和权限之间的多对多关系
在mysql 中建立引用约束的时候会出现MySQL ERROR 1005: Can't create table (errno: 150)")的错误信息结果是不能建立 引用约束。
创建角色模型里面app/models/Role.php用以下的例子:
<?php
namespace App\Http\Model\Role;
use Zizaco\Entrust\EntrustRole;
class Role extends EntrustRole{
}
这个Role模型有三个主要属性:
name-对角色独特的名称,用于查找信息的应用层中的作用。例如:"admin"、"owner"、"employee"。
display_name-对于角色的可读名称。不一定是唯一的选择。例如:"用户管理"、"项目业主"
description-一个更详细的解释是什么角色呢。也可选。
两display_name和描述是可选的;在各自领域的数据库可为空。
权限
创建权限模型里面app/models/Permission.php用以下的例子:
<?php
namespace App\Http\Model\Permission;
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission{
}
权限模型具有与Role相同的三个属性:
name - 权限的唯一名称,用于在应用程序层中查找权限信息。 例如:"create-post","edit-user","post-payment","mail-list-subscribe"。
display_name-用户权限的可读名称。 不一定是唯一的和可选的。 例如:"创建帖子","编辑用户","后付款","订阅邮件列表"。
description - 更详细的权限说明。
用户
接下来,在现有的用户模型中使用EntrustUserTraittrait。 例如:
<?php
use Zizaco\Entrust\Traits\EntrustUserTrait;
class User extends Eloquent
{
use EntrustUserTrait; // add this trait to your user model
...
}
这将启用与Role的关系,并在User模型中添加以下方法roles(),hasRole($name),can($permission)和 ability($roles,$permissions,$options)在您的User模型中。
别忘了,生成自动加载文件
composer dump-autoload
Laravel Zizaco/Entrust 扩展包,到这一步基本已经安装完成了,后期再发布一篇关于 Zizaco/Entrust 基本使用!
更多关于Zizaco/Entrust 扩展包的介绍可以点击查看:
Original url: Access
Created at: 2019-04-11 12:06:11
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论