本文转载:http://www.cnblogs.com/tonyqus/archive/2005/08/22/218271.html

数据表设计
分为用户表、角色表、角色拥有权限表、权限表、用户所属角色表

表名:Users(用户表)

字段 类型 长度 说明
ID int 自动编号,主键
UserName varchar 20
Password varchar 20

表名:Roles(角色表)

字段 类型 长度 说明
ID int 自动编号,主键
Name varchar 50

表名:UsersRoles(用户所属角色表)

字段 类型 长度 说明
ID int 自动编号,主键
UserID int 对Users.ID做外键
RoleID int 对Roles.ID做外键

表名:Permissions(权限表)

字段 类型 长度 说明
ID int 自动编号,主键
Name varchar 50 权限的名称

表名:RolesPermissions(角色权限表)

字段 类型 长度 说明
ID int 自动编号,主键
RoleID int 对Roles.ID做外键
PermissionID int 对Permissions.ID做外键
Allowed small int 该权限是否被允许

完成后的关系图如下所示:

以下的存储过程用于检查用户@UserName是否拥有名称为@Permission的权限
CREATE Procedure CheckPermission
(
    @UserName    varchar(20),
    @Permission    varchar(50)
)
AS
SELECT MIN(Allowed) FROM RolesPermissions
    INNER JOIN Permissions ON Permissions.ID = PermissionID
    INNER JOIN Roles ON Roles.ID = RoleID
    INNER JOIN UsersRoles ON UsersRoles.ID = Roles.ID
    INNER JOIN Users ON Users.ID = UsersRoles.UserID
WHERE Users.UserName=@UserName AND Permissions.Name=@Permission

单用户多角色权限的原理
假设用户A现在同时有两个角色Programmer和Contractor的权限

Permission名称 角色Programmer权限 角色Contractor权限 组合后权限
查看文件 允许(Allowed=1) 允许(Allowed=1) 允许
编辑文件 允许(Allowed=1) 不允许(Allowed=0) 不允许
上传图片 允许(Allowed=1) 没有此权限的记录 允许

单用户多角色权限的MSSQL实现相关推荐

  1. Linux单用户下提示权限不够,Linux_/dev/null 权限不足,/dev/null文件设备的权限不对, - phpStudy...

    /dev/null 权限不足 /dev/null文件设备的权限不对,会造成诸如pop3中的:Starting POP3d: ll_daemon_resetio: Permission denied的错 ...

  2. 基于用户组织角色权限和资源的五要素

     一.简 介 在进行本单位办公自动化系统需求分析时创建了基于用户.组织的部门结构.实际工作角色.权限种类.资源树的五要素全排列需求分析方法,并进行了软件的功能需求分析,以及授权本身的管理,该方法是 ...

  3. Oracle数据库如何查看当前用户角色权限及默认表空间

    http://database.51cto.com/art/201108/280474.htm 在Oracle数据库操作中,有时候我们需要查看当前用户的一些信息,包括用户拥有的角色权限信息.用户表空间 ...

  4. html 权限设定页面,角色权限设置(总管理员权限).html

     角色权限设置(总管理员权限) $axure.utils.getTransparentGifPath = function() { return 'resources/images/transpar ...

  5. MVC基于角色权限控制--用户管理

    用户管理模块包括 新增用户.修改用户.展示用户列表.删除用户.用户角色分配.用户角色删除.用户权限分配 这里只介绍关于权限有关的 用户角色分配.用户角色删除.用户权限分配 新建控制器 UserInfo ...

  6. 用户、角色和权限,多表查询

    一,各个表格 1.用户表 CREATE TABLE `t_user` ( `id` varchar(40) NOT NULL, `username` varchar(20) NOT NULL, PRI ...

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

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

  8. RBAC用户角色权限设计方案(转)

    RBAC用户角色权限设计方案 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限 ...

  9. spring boot结合shiro实现用户-角色-权限的控制(包含用户名密码登陆和手机号验证码登陆)

    spring boot整合shiro实现权限校验 1.首先导入项目所需jar包 <parent><groupId>org.springframework.boot</gr ...

最新文章

  1. 使用内存映射文件在进程之间共享数据
  2. ASP.NET中级学习2
  3. 用CSS实现首字下沉效果,仿word的首字下沉
  4. JavaScript prototype 属性
  5. mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层如何执行吗?
  6. 小蜜团队万字长文 | 讲透对话管理模型最新研究进展
  7. 2020 年 7 个软件开发趋势
  8. 智慧城市要让市民有获得感
  9. 10.性能之巅 洞悉系统、企业与云计算 --- 网络
  10. 数字字符减去数字字符0就是数字
  11. 标签 'http' 已声明。标签名称在批查询或存储过程内部必须唯一。
  12. 基于android p的miui,小米8青春版终于迎来基于AndroidP的MIUI10系统,米粉欢呼
  13. tomcat安装及配置教程(保姆级)
  14. golang中的strings.ToLower
  15. iOS调用高德地图SDK
  16. w10系统打不开服务器共享打印机,win10系统无法共享打印机的方案
  17. 微信小程序getPhoneNumber获取手机号,解决code失效问题
  18. 差之毫厘:etcd 3 完美支持 HTTP 访问
  19. 思科交换机备份文件到服务器,CISCO交换机备份和恢复配置文件的方法
  20. 人工智能技术知识图谱

热门文章

  1. 微软亲手盖上IE棺材板:明年6月停用,慢且不安全,还因垄断被罚款170亿
  2. 《C++面向对象高效编程(第2版)》——3.13 采用语义
  3. Docker + gunicron + supervisord 部署python应用
  4. Hadoop HBase概念学习系列之HRegion服务器(三)
  5. Linux下使用Apache实现域名转发(Tomcat/JBOSS)
  6. Linux Kernel TCP/IP Stack — 协议栈发包处理流程
  7. 5GS 协议栈 — N1 接口的协议栈(NAS)
  8. 5G NGC — NEF Traffic Influence Service
  9. ETSI GS MEC 012,RNIS API
  10. Python 进阶_函数式编程