RBAC打造通用WEB权限

RBAC不用给用户单个分配权限,只用指向对应的角色就会有对应的权限,而且分配权限和收回权限都很方便

5个关系对应5张表

五张表设计

 1 CREATE TABLE `user` (
 2   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 3   `name` varchar(20) NOT NULL DEFAULT ‘‘ COMMENT ‘姓名‘,
 4   `email` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT ‘邮箱‘,
 5   `is_admin` tinyint(1) NOT NULL DEFAULT ‘0‘ COMMENT ‘是否是超级管理员 1表示是 0 表示不是‘,
 6   `status` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘状态 1:有效 0:无效‘,
 7   `updated_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘最后一次更新时间‘,
 8   `created_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘插入时间‘,
 9   PRIMARY KEY (`id`),
10   KEY `idx_email` (`email`)
11 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT=‘用户表‘;
12
13 CREATE TABLE `role` (
14   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
15   `name` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT ‘角色名称‘,
16   `status` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘状态 1:有效 0:无效‘,
17   `updated_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘最后一次更新时间‘,
18   `created_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘插入时间‘,
19   PRIMARY KEY (`id`)
20 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘角色表‘;
21
22 CREATE TABLE `user_role` (
23   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
24   `uid` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘用户id‘,
25   `role_id` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘角色ID‘,
26   `created_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘插入时间‘,
27   PRIMARY KEY (`id`),
28   KEY `idx_uid` (`uid`)
29 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘用户角色表‘;
30
31 CREATE TABLE `access` (
32   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
33   `title` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT ‘权限名称‘,
34   `urls` varchar(1000) NOT NULL DEFAULT ‘‘ COMMENT ‘json 数组‘,
35   `status` tinyint(1) NOT NULL DEFAULT ‘1‘ COMMENT ‘状态 1:有效 0:无效‘,
36   `updated_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘最后一次更新时间‘,
37   `created_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘插入时间‘,
38   PRIMARY KEY (`id`)
39 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘权限详情表‘;
40
41 CREATE TABLE `role_access` (
42   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
43   `role_id` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘角色id‘,
44   `access_id` int(11) NOT NULL DEFAULT ‘0‘ COMMENT ‘权限id‘,
45   `created_time` timestamp NOT NULL DEFAULT ‘0000-00-00 00:00:00‘ COMMENT ‘插入时间‘,
46   PRIMARY KEY (`id`),
47   KEY `idx_role_id` (`role_id`)
48 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘角色权限表‘;
49
50 CREATE TABLE `app_access_log` (
51   `id` int(11) NOT NULL AUTO_INCREMENT,
52   `uid` bigint(20) NOT NULL DEFAULT ‘0‘ COMMENT ‘品牌UID‘,
53   `target_url` varchar(255) NOT NULL DEFAULT ‘‘ COMMENT ‘访问的url‘,
54   `query_params` longtext NOT NULL COMMENT ‘get和post参数‘,
55   `ua` varchar(255) NOT NULL DEFAULT ‘‘ COMMENT ‘访问ua‘,
56   `ip` varchar(32) NOT NULL DEFAULT ‘‘ COMMENT ‘访问ip‘,
57   `note` varchar(1000) NOT NULL DEFAULT ‘‘ COMMENT ‘json格式备注字段‘,
58   `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
59   PRIMARY KEY (`id`),
60   KEY `idx_uid` (`uid`)
61 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=‘用户操作记录表‘;
62
63
64 INSERT INTO `user` (`id`, `name`, `email`, `is_admin`, `status`, `updated_time`, `created_time`)
65 VALUES(1, ‘超级管理员‘, ‘[email protected]‘, 1, 1, ‘2016-11-15 13:36:30‘, ‘2016-11-15 13:36:30‘);

用户与角色关联起来,角色与权限关联起来,通过判断角色来管理权限(哪些页面不能访问)

判断权限逻辑:根据用户ID取出用户角色==》如果是超级管理员则不需要做权限判断,否则根据角色取出所属权限==》根据权限取出可访问链接列表==》判断当前操作是否在列表中==》无权限则返回提示页面;

本内容整理自慕课网视频教程——《RBAC打造通用web管理权限》

时间: 2024-10-06 00:45:42

RBAC打造通用WEB权限的相关文章

利用RBAC模型实现一个通用的权限管理系统

本文主要描述了一个通用的权限系统实现思路与过程.也是对此次制作权限管理模块的总结. 制作此系统的初衷是为了让这个权限系统得以“通用”.就是生产一个web系统通过调用这个权限系统(生成的dll文件),就可以实现权限管理.这 个权限系统会管理已生产系统的所有用户,菜单,操作项,角色分配,权限分配,日志等内容. 实现此功能从正常访问和非法访问两个方面入手.正常访问即用户登录系统后只能看到或操作自己拥有的菜单:非法访问即通过拼写url等途径访问系 统的某个功能:所以程序除了实现用户登录后获取用户拥有的菜

开源干货!!!.NET Core + Vue.js(iview-admin) 通用动态权限(RBAC)管理系统框架[DncZeus]开源啦!!!

DncZeus 前言 关于 DncZeus DncZeus = Dnc + Zeus "Dnc"--.Net Core 的缩写: "Zeus"--中文译为宙斯,是古希腊神话中的众神之王,奥林匹斯十二主神之首,统治宇宙万物的至高无上的主神(在古希腊神话中主神专指宙斯),人们常用"众神和人类的父亲"."神王"来称呼他,是希腊神话诸神中最伟大的神. DncZeus的愿景就是做一个.NET Core 领域的简易精致的通用后台权限管理模

一步一步用jenkins,ansible,supervisor打造一个web构建发布系统

新blog地址:http://hengyunabc.github.io/deploy-system-build-with-jenkins-ansible-supervisor/ 一步一步用jenkins,ansible,supervisor打造一个web构建发布系统. 本来应该还有gitlab这一环节的,但是感觉加上,内容会增加很多.所以直接用github上的spring-mvc-showcase项目来做演示. https://github.com/spring-projects/spring-

Linux+postfix+extmail+dovecot打造基于web页面的邮件系统

Linux+postfix+extmail+dovecot打造基于web页面的邮件系统 linuxwebmysqlapacheredhat数据库服务器 Linux+postfix+extmail+dovecot打造基于web页面的邮件系统 最终效果图: 准备阶段:需要手动下载的软件包: postfix-2.6.5.tar.gz courier-authlib-0.62.4.tar.bz2 eextmail-1.2.tar.gz xtman-1.1.tar.gz Time-HiRes-1.9707

AngularJs打造一个简易权限系统

AngularJs打造一个简易权限系统 一.引言 上一篇博文已经向大家介绍了AngularJS核心的一些知识点,在这篇博文将介绍如何把AngularJs应用到实际项目中.本篇博文将使用AngularJS来打造一个简易的权限管理系统.下面不多说,直接进入主题. 二.整体架构设计介绍 首先看下整个项目的架构设计图: 从上图可以看出整个项目的一个整体结构,接下来,我来详细介绍了项目的整体架构: 采用Asp.net Web API来实现REST 服务.这样的实现方式,已达到后端服务的公用.分别部署和更好

混合了RBAC和ACL的权限系统(一) -- 用户组织结构

最近的工作是一个基础设计,打造一个基于RBAC和ACL的权限基础组件. 这个基础组件的特点是:同时混合了RBAC和ACL的认证方式,也就是说同时提供系统级别的授权(RBAC)和对象级别的授权(ACL). 1. 表结构说明 1)组织单位(Organization) 组织单位作为基本结构单位.在人员的组织结构中,是用来表示组织结构树.(例如公司) 名称 定义 说明 id bigint 主键,组织结构id name varchar 名称 dn varchar distinguish name pare

Android打造通用的下拉刷新组件

还记得上一篇 blog 的内容吗?如果不记得建议先去了解一下,Android 事件处理全面剖析 ,因为下拉刷新需要用到手势的处理,而上一篇文章中,对事件处理做了很详细的说明,了解了事件的处理机制,对理解本篇文章有很大的帮助.好了,这里就当大家都已经对事件处理有了一定的了解,开始我们的下拉刷新征程. 还是老规矩,先上效果图,再根据效果图来分析实现的原理: 一 .分析原理 我们都知道,listView 控件为我们提供了 addHeaderView.和 addFootView 的方法,我们通过此方法可

web权限数据库设计

CREATE TABLE account ( accid INT DEFAULT '0' NOT NULL, accCode CHAR(20), accName VARCHAR(30), PRIMARY KEY (accid) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE role ( roleid INT DEFAULT '0' NOT NULL, roleCode CHAR(20), roleName VARCHAR(30), PRIM

对delegate进行扩展 打造通用的"计时完成"方法 z

让用户尽量少打字 每次让用户输入这么多信息的确很糟糕, 可以改进一下设计: 服务器IP和用户名可以存放在配置文件里面, 初始化的时候默认加载到相应的文本框中; 从安全角度考虑, 密码必须经过用户手动输入; 而数据库名字则没必要让用户输入, 有了服务器IP.用户名.密码后可以尝试连接SQL Server, 连接SQL Server成功后, 把数据库中所有的数据库名加载到ComboBox让用户选择连接哪个数据库. 密码不正确 密码正确 如何实现 在后台代码中定义一个计时器, 设置它的Interval