yii2 rbac权限管理学习笔记

yii2 rbac权限管理学习笔记

下面介绍一个 yii2 的 Rbac 权限管理设置,闲话少说,直接上代码,

1、首先我们要在组件里面配置一下 Rbac ,如下所示(common/config/main-local.php或者main.php)。

‘authManager’ => [
‘class’ => ‘yii\rbac\DbManager’,
‘itemTable’ => ‘auth_item’,
‘assignmentTable’ => ‘auth_assignment’,
‘itemChildTable’ => ‘auth_item_child’,
],
当然,在配置里面也可以设置 默认角色,只是我没写。Rbac 支持两种类,PhpManager 和 DbManager ,这里我使用 DbManager 。

yii migrate –migrationPath=@yii/rbac/migrations/ 运行此命令生成权限数据表

2、配置完毕,下面我们尝试着创建一个 许可 Permiassion,代码如下

// 创建许可
public function createPermission($item)
{

$auth = Yii::$app->authManager;

$createPost = $auth->createPermission($item);
$createPost->description = ‘创建了 ‘ . $item . ‘ 许可’;
$auth->add($createPost);
}

3、好的,许可我们就创建完成了,下面我们创建一个 角色吧 roles

// 创建角色
public function createRole($item)
{

$auth = Yii::$app->authManager;

$role = $auth->createRole($item);
$role->description = ‘创建了 ‘ . $item . ‘ 角色’;
$auth->add($role);
}

4、好的,就是这么简单,不要激动,下面更简单,给角色分配许可,上代码

// 为角色分配许可
public function createEmpowerment($items)
{

$auth = Yii::$app->authManager;

$parent = $auth->createRole($items[‘name’]);
$child = $auth->createPermission($items[‘description’]);

$auth->addChild($parent, $child);
}

5、好的,分配许可也创建完成了,我操,太尼玛简单了,继续上代码,给角色分配用户

// 给用户分配角色
public function assign($item)
{

$auth = Yii::$app->authManager;
$reader = $auth->createRole($item[‘name’]);
$auth->assign($reader, $item[‘description’]);
}

6、好的好的,就是这么简单,我自己都他妈不敢相信啊,你相信吗???最后一步,验证用户是否有权限

public function beforeAction($action)
{

$action = Yii::$app->controller->action->id;
if(\Yii::$app->user->can($action)){

return true;
}else{

throw new \yii\web\UnauthorizedHttpException(‘对不起,您现在还没获此操作的权限’);
}
}

好了,一口气都他妈写完了,老爽了。当然,可以创建就一定可以修改和删除,修改和删除都是多表关联操作的, Yii也为我写好了方法,当然你也可以自己去写,都是小意思了。

数据库sql文件地址 /vendor/yiisoft/yii2/rbac

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109014.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 贝塞尔方程与贝塞尔函数学习笔记

    贝塞尔方程与贝塞尔函数学习笔记《数学物理方法(顾樵)》第13章学习笔记第一节几个微分方程的引入三维波动方程:∂2v∂t2=a2(∂2v∂x2+∂2v∂y2+∂2v∂z2)≡a2∇2v\frac{\partial^2v}{\partialt^2}=a^2(\frac{\partial^2v}{\partialx^2}+\frac{\partial^2v}{\partialy^2}+\frac{\partial^2v}{\partialz^2})\equiva^2\nabla^2v∂t2.

    2022年10月26日
  • CSS鼠标悬浮及其样式

    CSS鼠标悬浮及其样式hover鼠标悬浮的使用和定义用法示例选择鼠标指针浮动在其上的元素,并设置其样式:.box:hover{background-color:red;}定义和用法:hover选择器用于选择鼠标指针浮动在上面的元素。提示:hover选择器可用于所有元素:link选择器设置指向未被访问页面的链接的样式,:visited选择器用于设置指向已被访问的页面…

    2022年5月31日
  • 快速批量去除图片水印方法大全~~

    原文地址:http://blog.163.com/simonyao_cool/blog/static/16512555720107311858809/

    2022年4月7日
  • 移动端禁用长按复制js兼容css样式_手机为什么长按不能复制

    移动端禁用长按复制js兼容css样式_手机为什么长按不能复制添加全局禁止选择文本的CSS属性*{-webkit-touch-callout:none;/*系统默认菜单*/-webkit-user-select:none;/*webkit浏览器*//*noinspectionCssUnknownProperty*/-khtml-user-select:none;/*早期浏览器*/-moz-user-select:none;/*火狐浏览器*/-ms-user-select:

    2022年9月29日
  • python常见的数据类型有哪些?

    python常见的数据类型有哪些?变量用来存储数据,那么大家有没有想过,我们应该让变量占用多大空间,保存什么样的数据呢?在讲解变量的类型之前,我们先来看一个生活中的例子,例如,我们要运送一台电脑,大卡车和小轿车都可以完成,但是,如果使用大卡车运送一台电脑,显然有点小题大做,浪费了大卡车的空间,如图1所示。图一:卡车和轿车运输一台电脑同理,如果使用变量存储数据时,为了更充分利用内存空间,我们可以为变量指定不同的数据类型。Python中常见的数据类型如图2所示图二:Python变量数据类型图二中罗列了Python中常见的数据类型,下

    2022年6月4日
  • Django(55)GenericAPIView源码分析

    Django(55)GenericAPIView源码分析源码分析GenericAPIView继承自APIView,也就是在APIView基础上再做了一层封装,源码如下:classGenericAPIView(views.APIView):query

    2022年7月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号