首页 技术 正文
技术 2022年11月14日
0 收藏 438 点赞 2,605 浏览 1497 个字

简介

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 就行了。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,492
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,294