1.权限

RBAC模型(Role-Based Access Control:基于角色的访问控制)

RBAC的组成:用户、角色和权限。

User(用户):每个用户都有唯一的UID识别,并被授予不同的角色
Role(角色):不同角色具有不同的权限
Permission(权限):访问权限
用户-角色映射:用户和角色之间的映射关系
角色-权限映射:角色和权限之间的映射

1.1 五张表的权限
       
       用户信息表(T_User)
       角色信息表(T_Role)
       模块信息表(T_Module)
       
       用户角色表(T_User_Role)
       角色模块表(T_Role_Module)
       角色权限表

1.2 关系
            用户角色表(T_User_Role)      角色模块表(T_Role_Module)
       用户------------------------>角色------------------------->权限
     (T_User)                    (T_Role)                      (T_Module)

public List<Module> listModel(int pid) {List<Module> list = dao.listModel(pid);for(Module m: list) {if(m.getUrl() == null || "".equals(m.getUrl().trim())) {m.setChildren(listModel(m.getId()));}}return list;}

1.权限系统

访问控制策略

访问控制策略一般有以下几种方式:
(1)自由型访问控制:用户|对象来决定访问权限。信息的所有者来设定谁有权限来访问信息以及操作类型(读,写,执行...)是一种基于身份的访问控制。例如UNIX权限管理。

(2)强制性访问控制:系统来决定访问权限。安全属性是强制型的规定,它由安全管理员或操作系统根据限定的规则确定的,是一种规则的访问控制

(3)基于角色的访问控制:角色决定访问权限。用组织角色来同意或拒绝访问。比MAC,DAC更灵活,适合作为大多数公司的安全策略,但对一些机密性高的政府系统不适用。——————————————————[本次实现]

(4)规则驱动的基于角色的访问控制:提供了一种基于约束的访问控制,用一种灵活的规则描述语言和ixn的信任规则执行机制来实现。

(5)基于属性证书的访问控制:访问权限信息存放在用户属性证书的权限属性中,每个权限属性描述了一个或多个用户的访问权限。但用户对某一资源提出访问请求时,系统根据用户的属性证书中的权限来判断是否允许或拒绝。

RBAC

RBAC(Role-Based Access Control)-基于角色的访问控制,模型是20世纪90年代研究出来的一种新模型,但从本质上讲,这种模型是对前面描述的访问矩阵模型的扩展。这种模型的基本概念是把许可权(Permission)与角色(Role)联系在一起,用户通过充当合适橘色的成员而获得该角色的许可权。

在实际的组织中,为了完成组织的业务工作,需要在组织内部设置不同的职位,职位既标识一种业务分工,又标识一种责任与权利。根据业务分工的需要,职位被划分给不同群体,各个群体的人根据其工作任务的需要被赋予不同的职责和权力,每个人有权了解与使用与自己任务相关的信息与资源,对于那些不应该被知道的信息则应该限制他们访问,这就产生了访问控制的需求。

【例子】在一个大学中,有校长,副校长,训练部长,组织处长,科研处长,教保处长等不同的职位,在通常情况下,职位所赋予的权利是不变的,但在某个职位上的工作的人可以根据需要调整,RBAC模型对组织内部的这些关系与访问控制要求给出了非常恰当的描述。

RBAC重要对象:
1.用户(User):角色施加的主体;用户通过拥有某个或多个角色以得到对应的权限
2.角色(Role):一组权限的集合
3.权限(Permission):用户限定能够访问的一个资源

【注意】
一个用户拥有若干角色,一个角色拥有若干权限,这样就构成了用户-角色-权限的授权模型。

2.组成

用户表:主键id,用户名,用户邮箱,是否为管理员,状态,创建时间,更新时间,...... 角色表:角色id,角色名,状态,创建时间,更新时间 权限表(菜单权限表):权限id,权限标题,权限父级id,图标,权限路径,状态,排序,创建时间,更新时间,...... 用户角色表:主键id,用户id,角色id,创建时间,更新时间 角色权限表:主键id,角色id,权限id,创建时间,更新时间,......

/*权限表(菜单表)*/
create table tb_promission
(id number primary key,--权限idtext varchar2(100) not null,--权限名称pid number not null,--权限父级idicon varchar2(100),--菜单显示的iconurl varchar2(100),--权限资源路径state number,--状态;该记录是否有效1:有效、0:无效sort number--排序码
)
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(1,'店铺管理',-1,'','',1,1);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(2,'图书分类管理',-1,'','',1,2);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(3,'图书管理',-1,'','',1,3);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(4,'订单管理',-1,'','',1,4);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(5,'系统设置',-1,'','',1,5);
​
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(6,'店铺添加',1,'','/addshop.jsp',1,6);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(7,'店铺列表',1,'','/shopList.jsp',1,7);
​
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(8,'图书分类添加',2,'','/addBookType.jsp',1,8);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(9,'图书分类列表',2,'','/addBookTypeList.jsp',1,9);
​
​
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(10,'图书添加',3,'','/addBook.jsp',1,10);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(11,'图书列表',3,'','',1,11);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(12,'所有图书',11,'','/addBookList.jsp',1,12);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(13,'未上架',11,'','/notAvailableBook.jsp',1,13);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(14,'已上架',11,'','/listedBook.jsp',1,14);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(15,'已下架',11,'','/removedBook.jsp',1,15);
​
​
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(16,'所有订单',4,'','/orderList.jsp',1,16);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(17,'未付款订单',4,'','/UnpaidOrder.jsp',1,17);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(18,'已付款订单',4,'','/PaidOrder.jsp',1,18);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(19,'未收货订单',4,'','/UnconscionedOrder.jsp',1,19);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(20,'已完成订单',4,'','/DoneOrder.jsp',1,20);
​
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(21,'系统设置',5,'','/SystemSettings.jsp',1,21);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(22,'菜单管理',5,'','/MenuManagement.jsp',1,22);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(23,'权限管理',5,'','/PermissionManagement.jsp',1,23);
insert into tb_promission(id,text,pid,icon,url,state,sort) values
(24,'用户管理',5,'','/UserManagement.jsp',1,24);
​

Easyui后端功能相关推荐

  1. 【愚公系列】2022年10月 微信小程序-电商项目-小微商户支付后端功能实现(node版)

    文章目录 前言 一.小微商户支付后端功能实现(node版) 1.相关文档 2.项目配置 前言 微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全.便捷.专业的在线支付服务.以" ...

  2. 【愚公系列】2022年10月 微信小程序-电商项目-微信支付后端功能实现(node版)

    文章目录 前言 一.微信支付后端功能实现(node版) 1.相关文档 2.项目配置 前言 微信支付是腾讯集团旗下的第三方支付平台,致力于为用户和企业提供安全.便捷.专业的在线支付服务.以"微 ...

  3. 【githubshare】全功能复现的 Instagram 克隆版,覆盖了诸多 ins 常用的前后端功能

    Instagram MERN,应该是我见过最全功能复现的 Instagram 克隆版了,基本上覆盖了诸多 ins 常用的前后端功能. GitHub:github.com/jigar-sable/ins ...

  4. 微信小程序 获取 手机验证码 短信验证码 后端功能实现解析

    本文原创首发CSDN,链接 https://mp.csdn.net/console/editor/html/106041472 ,作者博客https://blog.csdn.net/qq_414641 ...

  5. easyUI 多功能datagrid 用户控件

    1 往来单位 [{"id":"000","parentId":"","text":"客户列 ...

  6. easyui打印功能实现打印解决方案

    使用 jQuery打印插件jqprint  结合 easyui的面板 panel实现 实现:将需要打印的内容通过后台方法加载到页面中隐藏的panel中,然后调用jqprint的jqprint();打印 ...

  7. 6、幻灯管理 - 后端功能开发 - 微擎小程序模块应用开发

    第一步: 模板创建 依然是进入到 /addons/sx_haodian/template/ 目录,新建如下3个模板 1.adver.html 列表模板创建 {template 'common/head ...

  8. 7、用户管理 - 后端功能开发 - 微擎小程序模块应用开发

    第一步: 模板创建 依然是进入到 /addons/sx_haodian/template/ 目录,新建如下2个模板 1.users.html 用户列表模板 {template 'common/head ...

  9. 5、店铺管理 - 后端功能开发 - 微擎小程序模块应用开发

    第一步: 模板创建 依然是进入到 /addons/sx_haodian/template/ 目录,新建如下3个模板 1.shop.html 列表模板创建 {template 'common/heade ...

最新文章

  1. MySQL 关于毫秒和微秒的处理,MySQL获取毫秒!
  2. 墙面也能变镜子,只看影子就能还原视频,MIT新算法让摄像头无死角
  3. OAuth 2 开发人员指南
  4. 获得WebApi用Post方法获得新增数据的信息
  5. 【Android 逆向】类加载器 ClassLoader ( 启动类加载器 | 扩展类加载器 | 应用类加载器 | 类加载的双亲委托机制 )
  6. 5G时代,MPLS WAN如何发展?-vecloud服务器
  7. springBoot+springSecurity 数据库动态管理用户、角色、权限(二)
  8. java dbtype_Java实现数据库的读写分离
  9. SQL终极优化(包括很多非索引方面的优化和原理)
  10. 装windows和Linux系统时找不到硬盘,pe安装系统没有出现磁盘,不能识别磁盘
  11. html在表格添加下拉按钮,Bootstrap-table 使用说明--如何在表格td里增加一个按钮
  12. 优秀!本科生发表Nature论文,直博美国顶尖名校
  13. BlueHost Gzip优化JS和CSS传输
  14. Python 进阶之路 (五) map, filter, reduce, zip 一网打尽
  15. 【离散数学】数理逻辑 第一章 命题逻辑(2) 命题公式及其符号化、命题公式的赋值
  16. UWF自定义设置与命令管理
  17. 我爱淘冲刺阶段站立会议每天任务1
  18. 7-15 地下迷宫探索
  19. 打印101~150之间的质数
  20. linux服务器远程修改mac地址,linux下修改MAC地址问题解决方法

热门文章

  1. 切图Photoshop参考线的操作
  2. 来电铃声和通话中的提示音
  3. Creo服务器管理器配置文件,Creo配置文件Config介绍及设置方法 | 坐倚北风
  4. Fiddler 手机抓包
  5. 微信小程序:星座运势,周公解梦流量主微信小程序
  6. xxl-job简单使用踩坑
  7. 微信小程序wx.request请求接口需设置header: { accept: */*,content-type: application/json },
  8. Linux配置环境变量不起作用
  9. THE SIXTH DAY
  10. B. Ela‘s Fitness and the Luxury Number codeforces 1737B