Laravel Entrust 权限管理扩展包的使用笔记
简介
Entrust 是一个简洁而灵活的基于角色进行权限管理的 Laravel 扩展包。针对 Laravel 5,官方推荐的安装版本是 5.2.x-dev。它的详细使用方法请查看 Entrust GitHub 主页:https://github.com/Zizaco/entrust。
5.2.x-dev 这个版本最后一次更新是 2016 年 12 月,距现在已经很久没有更新了。这里针对在使用过程中间遇到的一些问题的进行记录。
entrust:migration 命令执行报错
在对 Entrust 进行配置时就遇到了问题。执行 entrust:migration 命令来生成 Entrust 要用到的迁移文件时报错:
$ php artisan entrust:migration
In BoundMethod.php line 135:
Method Zizaco\Entrust\MigrationCommand::handle() does not exist
解决方法:
在 app/Providers/AppServiceProvider.php 中 register() 方法中加上如下代码:
$this->app->extend('command.entrust.migration', function () {
return new class extends \Zizaco\Entrust\MigrationCommand
{
public function handle()
{
parent::fire();
}
};
});
运行迁移文件报错 max key length is 767 byte
使用 artisan 命令运行迁移文件时报类似这样的错:1071 Specified key was too long; max key length is 767 bytes,
解决办法:
修改 database/migrations 目录下的 xxx_entrust_setup_tables.php,将 roles 表和 permissions 表的 name 字段的定义修改成如下格式:
$table->string('name', 191)->unique();
显示的定义字符串的最大长度,避免索引列长度超出限制((191 * 4 = 764) < 767 byte)。
@permission 命令不支持自定义 user guard
Laravel 默认的用户认证是 users 表,Entrust 自定义的 blade 命令 @permission 不支持自定义 user guard。默认只支持 users 用户。
普遍场景是有一个 admin_users 管理员用户表,对这个表需要进行用户认证和权限管理。先在 config/auth.php 中增加名称为 admin_user 的 user guard。然后在 app/Providers/AppServiceProvider.php 中 boot() 方法增加如下代码:
\Blade::directive('mypermission', function ($expression) {
return "<?php if (\\Auth::guard('admin_user')->user()->can({$expression})) : ?>";
}); \Blade::directive('endmypermission', function ($expression) {
return "<?php endif; // Entrust::can ?>";
});
相当于在 blade 中新增了两条命令 @mypermission 和 @endmypermission,针对 admin_users 用户进行权限检查。用 @mypermission 命令代替扩展包自带的 @permission 就行了。
Laravel Entrust 权限管理扩展包的使用笔记的更多相关文章
- 一款你不容错过的Laravel后台管理扩展包 —— Voyager
http://laravelacademy.org/post/6401.html Posted on 2016年11月1日 by 学院君 1.简介 Voyager是一个你不容错过的Laravel后 ...
- 一款你不容错过的Laravel后台管理扩展包 —— Voyager – Laravel学院
1.简介 Voyager是一个你不容错过的Laravel后台管理扩展包,提供了CRUD操作.媒体管理.菜单构建.数据管理等操作. 官网:https://the-control-group.github ...
- Yii之权限管理扩展 srbac
最近在研究 Yii 的权限控制功能,尽管Yii 自身提供了一个简单的权限管理,但是很多时候,我们还是需要对其做一点扩展. 在这里,我向大家推荐一个不错的扩展:SRBAC. 在Yii的官方网站的exte ...
- Entrust - Laravel 用户权限系统解决方案
Zizaco/Entrust 是 Laravel 下 用户权限系统 的解决方案, 配合 用户身份认证 扩展包 Zizaco/confide 使用, 可以快速搭建出一套具备高扩展性的用户系统. Conf ...
- 推荐 Laravel API 项目必须使用的 8 个扩展包
如今在现代网络开发中,比较流行的模式是基于 API 开发,可以通过手机或网站来创建服务. Laravel 是创建基于 API 的项目的最佳框架之一,它为世界各地的大型社区提供了高速开发. Larave ...
- Entrust - Laravel 用户权限系统解决方案 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 - Powered by PHPHub
说明# Zizaco/Entrust 是 Laravel 下 用户权限系统 的解决方案, 配合 用户身份认证 扩展包 Zizaco/confide 使用, 可以快速搭建出一套具备高扩展性的用户系统. ...
- 手把手安装Laravel框架(permissions扩展包)实现RBAC权限---以及一些安装时的ERROR
a.依赖管理工具,框架,环境 1.composer 2.laravel(我的是5.5) 3.PHP(我的7.2),MySql(我的5.7) b,安装 1.首先需要安装一个干净的 Laravel 项目, ...
- 【转】下载量最高的 100 个 Laravel 扩展包推荐
说明 Laravel 另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态. 本文对 Packagist 上打了 Laravel 标签 的扩展包进行整理,截止到现 ...
- laravel框架应用和composer扩展包开发
laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,发展势头迅猛,应用非常广泛,有丰富的扩展包可以应付你能想到的各种应用场景,laravel框架思想前卫,跟随时代潮 ...
随机推荐
- lightoj 1145 - Dice (I)(dp+空间优化+前缀和)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1145 题解:首先只要是dp的值只和上一个状态有关系那么就可以优化一维,然后这题 ...
- 杭电多校第九场 D Rikka with Stone-Paper-Scissors 数学
Rikka with Stone-Paper-Scissors Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/52428 ...
- codeforces 811 D. Vladik and Favorite Game(bfs水题)
题目链接:http://codeforces.com/contest/811/problem/D 题意:现在给你一个n*m大小的图,你输出一个方向之后,系统反馈给你一个坐标,表示走完这步之后到的位子, ...
- JS数组方法整理(附使用示例)
整理目前所用过的数组方法,学习了新增的es6方法. 1.arr.push() 从后面添加元素,返回值为添加完后的数组的长度 let arr = [1,2, is 8.3,4,5] console.lo ...
- 爬虫 之 requests
Requests 安装pip install requests 官方设计原则:让HTTP服务于人类 一.常用方法 import requests url = "http://www.http ...
- ssh-agent代理的简单用法
前言 在ansible的官方文档中,提到了强烈推荐用ssh-agent来管理密钥 究竟ssh-agent是什么,它有什么用法呢,下面来一探究竟. ssh-agent是什么?用处是什么? ssh-age ...
- 013 turtle程序语法元素分析
目录 一.概述 二.库引用与import 2.1 库引用 2.2 使用from和import保留字共同完成库引用 2.3 两种库引用方法比较 2.4 使用import和as保留字共同完成库引用 三.t ...
- Git使用(二)版本库创建及文件修改
一.创建版本库 1.安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功! 安装完成后,还需要最后一步设置,在命令行输入: $ gi ...
- java对象与json字符串的互相转换
java对象与json字符串的互相转换 1.采用 net.sf.json.JSONObject maven依赖包: <dependency> <groupId>net.sf.j ...
- java对象排序(Comparable)详细实例
对象实现Comparable接口 public class Field implements Comparable<Field>{ private String name; private ...