博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RBAC角色权限控制
阅读量:5245 次
发布时间:2019-06-14

本文共 1523 字,大约阅读时间需要 5 分钟。

RBAC角色权限控制

  1. user (用户表)

    *  用户的基本信息(mid:用户信息id  如图)

    

 

 

  2. node (节点表)

    * 页面(模块\控制器\方法)

    

 

  3. role_node(角色、节点关联表)

    * 节点与角色(页面与角色)的对应关系(多对多)

    

 

 

  4. role (角色表)

     * 角色组

       

 

  5. user_role (用户角色关联表)

     * 用户与角色的对应关系(一对一)

    

    * 如果允许一个用户设置多个角色,那么角色权限鉴定一般使用两种方法:

     1. 角色组的权限取并集 (即:只要其中一个组拥有权限,用户就能使用该权限)

     2. 角色组的权限取交集(即:多个组同时拥有的权限,用户才能使用)

  

    权限检测模型:

  1. 使用role_node表,通过用户的rid(角色id,允许一个用户拥有多个角色)与nid(页面:模块\控制器、方法)查询用户是否拥有权限

alias('a') ->join('__'.$node_table.'__'.' n on n.id=a.nid') ->where(['a.rid'=>['in',$rids],'n.url'=>$actions]) ->find(); if(status){ return true; }else{ return false; } } //检测模块是否需要检验权限 public function filter_module(){ if(MODULE_NAME===C('NOT_CHECK_MODULE')){ return true; }else{ return false; } } }?>

 

行为监听:

  

is_login() ){ // 检查登陆 $action = MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME; if( D('Rbac')->check_access(session('role_id'), $action )===false ){ redirect( U('Index/no_permissions') ); } }else{ // 没有登录 redirect( U('Index/index') ); } } } }?>

 

转载于:https://www.cnblogs.com/dudeyouth/p/6237722.html

你可能感兴趣的文章
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
oracle中anyData数据类型的使用实例
查看>>
软件测试——性能测试总结
查看>>
12.4站立会议
查看>>
客户端访问浏览器的流程
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
Vue
查看>>
python-三级菜单和购物车程序
查看>>
条件断点 符号断点
查看>>
水平垂直居中
查看>>
MySQL简介
查看>>
设计模式之桥接模式(Bridge)
查看>>
jquery的$(document).ready()和onload的加载顺序
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>