设计基础:用户、角色、权限三大核心表,加上用户角色、角色权限两个映射表(用于给用户表联系上权限表)。这样就可以通过登录的用户来获取权限列表,或判断是否拥有某个权限。

 大致用到5张表:用户表(UserInfo)、角色表(RoleInfo)、菜单表(MenuInfo)、用户角色表(UserRole)、角色菜单表(RoleMenu)。

各表的大体表结构如下:

  1、用户表(UserInfo):Id、UserName、UserPwd

  2、角色表(RoleInfo):Id、RoleName

  3、菜单表(MenuInfo):Id、MenuName

  4、用户角色表(UserRole):Id、UserId、RoleId

  5、角色菜单表(RoleMenu):Id、RoleId、MenuId

  最关键的地方是,某个用户登录时,如何查找该用户的菜单权限?其实一条语句即可搞定:

  假如用户的用户名为Arthur,则他的菜单权限查询如下:

  Select m.Id,m.MenuName from MenuInfo m ,UserInfo u, UserRole ur, RoleMenu rm Where m.Id = rm.MenuId and ur.RoleId = rm.RoleId and ur.UserId = u.Id and u.UserName = 'Arthur'

1、用户信息表:

1

2

3

4

5

6

7

8

9

10

11

12

create table employee 

   userid varchar(50) not null,  --用户ID 

   username varchar(100),    --用户名 

   userpassword varchar(100), --密码 

   .. 

   .. 

   .. 

   .. 

alter table employee        --主键 

add constraint pk_employee_userid primary key (userid)

 2、角色表:

1

2

3

4

5

6

7

create table role 

  roleid varchar(50) not null--角色Id 

  rolename varchar(100),        --角色名称 

alter table tole     --主键 

add constraint pk_role_roleid primary key (roleid)

  3、权限菜单表 

1

2

3

4

5

6

7

8

9

10

11

create table popedom 

  popedomid int identity(1,1) not null--权限Id 

  popedomname varchar(100), --权限名称 

  popedomfatherid int,      --权限父ID 

  popedomurl varchar(100)   --树的连接路径 

  .. 

  .. 

) 

er table popedom       --主键 

add constraint PK_popedom primary key (popedomid)  

  添加数据如
insert into popedom values('我的办公桌',0,'')
insert into popedom values('电子邮箱',1,'../mail/EmaiolManage.aspx')
(添加数据的原则是一级接点的popedomfatherid 为0,如果是(我的办公桌)下面的接点,它们的popedomfatherid为(我的办公桌)的主键)

4、用户与角色关系表

1

2

3

4

5

6

7

8

create table user_role 

 connectionid int identity(1,1) not null--关系ID 

  userid varchar(50) not null,   --管理员表ID 

  roleid varchar(50) not null   --角色Id 

alter table user_role    --主键 

add constraint PK_admin_role primary key(connectionid)  

  5、角色与权限关系表

1

2

3

4

5

6

7

8

9

create table role_popedom     --角色与权限表 

  connectionid int identity(1,1), --关系Id 

  roleid varchar(50) not null,      --角色ID 

  popedomid int not null,   --权限Id 

  popedom    int   --权限 (1为可用,2为不可用) 

alter table role_popedom       --主键 

add constraint PK_role_popedom primary key(connectionid) --主键 

用户,角色,权限配置表相关推荐

  1. 用户·角色·权限·表的设计

    设计一个灵活.通用.方便的权限管理系统. 在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?我们可以把这些资源简单概括为静态资源(功能操作.数据列)和动态资源(数据),也 ...

  2. oracle查询用户权限和角色_详解jenkins配置用户角色权限的实现方法

    概述 今天介绍下jenkins应该怎么去配置用户角色权限,注意jenkins 配置用户角色权限需要安装插件 Role Strategy Plugin. 1.安装 Role Strategy Plugi ...

  3. Web开发中的用户角色权限设计总结

    在Web开发中关于权限管理设计大抵涉及到两个方面:一:功能方面权限设计:二:资源方面权限设计.二者比较来看,功能方面权限的可重用性更高. 1.关于权限: 按照角色权限的最简单的设计 名称 描述 用户 ...

  4. SpringSecurity动态加载用户角色权限实现登录及鉴权

    本文来说下SpringSecurity如何动态加载用户角色权限实现登录及鉴权 文章目录 概述 动态数据登录验证的基础知识 UserDetails与UserDetailsService接口 实现User ...

  5. 扩展RBAC用户角色权限设计方案(转载)

    扩展RBAC用户角色权限设计方案 来源:https://www.cnblogs.com/zwq194/archive/2011/03/07/1974821.html https://blog.csdn ...

  6. 【SSH框架/国际物流商综平台】-05 单点登录 用户-角色-权限分配 Ztree.js structs2.0 异常框架 细粒度权限控制 BaseEntitity中createby degree

    回顾 Shiro安全框架 认证,授权,加密,会话管理(单点登录),缓存,与web集成 单点登录(SSO Single Sign on)的原理 就是将原有的各个系统的会话管理机制,抽取出来交给第三方集中 ...

  7. RBAC用户角色权限设计方案

    RBAC用户角色权限设计方案 转自http://www.cnblogs.com/zwq194/archive/2011/03/07/1974821.html RBAC(Role-Based Acces ...

  8. Mysql —— C语言链接mysql数据库,用户 角色 权限(用户根据角色的不同拥有增删改查的权限、用户有三种认证方式)

    db_修改过(用户 角色 权限): 1.新增用户时候id 改为最大id值加一,之前用的select查看出来的记录数加一,删除后再增加会出错: 2.删除用户时候,若该用户创建过其他用户(不能改此用户名. ...

  9. Jenkins中安装Role-based Authorization Strategy插件来实现用户角色权限管理

    场景 CentOS中Jenkins的下载.安装.配置与启动(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11649 ...

  10. 【深度解析RBAC用户-角色-权限设计方案,以及核心逻辑代码的讲解】

    首先对于b2b.b2c等这一些网站后台,一般情况下都需要权限管理的设计与实现,对于这部分,通常是固定不变的,每次只需要做少量的改动即可. 如何设计这几张表呢? RBAC(基于角色的访问控制),也就是用 ...

最新文章

  1. [HNOI 2011]XOR和路径
  2. java netfox_SpringFox集成原理
  3. 【Zabbix】使用zabbix 3.4自带Mysql模板,监控Redhat 7.0上的Mysql
  4. C++学习笔记-----std::pair作为unordered_map的key
  5. 身份令牌toKen Vuex + localStorage结合存储
  6. mysql 两列互换
  7. [html] 如何去除标签<i>默认斜体?
  8. iphone字体_iPhone 适合老人盘吗?
  9. myeclipse2019左侧工程目录字体的大小调整
  10. sobel prewitt算法 模板加权模糊的解释 + 两类边缘下的二阶导数值
  11. 7-93 矩阵A乘以B (15 分)
  12. ie浏览器如何实现scrollto_如何实现报表直接打印需求
  13. 【Kafka】Kafka inter.broker.listener.name must be a listener name defined in advertised.listeners
  14. 【Linux】/etc/shadow文件字段解释
  15. SpringMVC+Spring Data JPA实现增删改查操作
  16. 分享6款国内、外开源PHP轻论坛CMS程序
  17. jmail组件 java,asp空间如何判断jmail组件已经安装?是否支持呢?
  18. Unity自动设置keystore密匙库的信息
  19. 华硕ac66php服务器,华硕ASUS RT-AC66U无线路由器部署NTP Server最佳实践
  20. Google Scholar特别好用的镜像网站链接

热门文章

  1. Windows下jupyter notebook 修改主题、字体、字号等以及各个主题的样式的展示、插件的安装等
  2. 如何把acer aspire5560G笔记本拆开清理灰尘
  3. Hydra(暴力破解)
  4. Ansiable常用模块讲解,以及Ansible的管理方式
  5. 阻塞队列BlockingQueue源码
  6. 微服务实战项目-学成在线-课程发布模块
  7. 谷歌开源Live Transcribe语音识别转文字工具
  8. 王力宏最新movie 恋爱通告 组图 海报!
  9. 苹果i7笔记本和i5有什么区别
  10. linux中pppoe技术分析,Linux中PPPOE技术分析