单用户多角色权限的MSSQL实现
本文转载: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实现相关推荐
- Linux单用户下提示权限不够,Linux_/dev/null 权限不足,/dev/null文件设备的权限不对, - phpStudy...
/dev/null 权限不足 /dev/null文件设备的权限不对,会造成诸如pop3中的:Starting POP3d: ll_daemon_resetio: Permission denied的错 ...
- 基于用户组织角色权限和资源的五要素
一.简 介 在进行本单位办公自动化系统需求分析时创建了基于用户.组织的部门结构.实际工作角色.权限种类.资源树的五要素全排列需求分析方法,并进行了软件的功能需求分析,以及授权本身的管理,该方法是 ...
- Oracle数据库如何查看当前用户角色权限及默认表空间
http://database.51cto.com/art/201108/280474.htm 在Oracle数据库操作中,有时候我们需要查看当前用户的一些信息,包括用户拥有的角色权限信息.用户表空间 ...
- html 权限设定页面,角色权限设置(总管理员权限).html
角色权限设置(总管理员权限) $axure.utils.getTransparentGifPath = function() { return 'resources/images/transpar ...
- MVC基于角色权限控制--用户管理
用户管理模块包括 新增用户.修改用户.展示用户列表.删除用户.用户角色分配.用户角色删除.用户权限分配 这里只介绍关于权限有关的 用户角色分配.用户角色删除.用户权限分配 新建控制器 UserInfo ...
- 用户、角色和权限,多表查询
一,各个表格 1.用户表 CREATE TABLE `t_user` ( `id` varchar(40) NOT NULL, `username` varchar(20) NOT NULL, PRI ...
- SpringSecurity动态加载用户角色权限实现登录及鉴权
本文来说下SpringSecurity如何动态加载用户角色权限实现登录及鉴权 文章目录 概述 动态数据登录验证的基础知识 UserDetails与UserDetailsService接口 实现User ...
- RBAC用户角色权限设计方案(转)
RBAC用户角色权限设计方案 RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联.简单地说,一个用户拥有若干角色,每一个角色拥有若干权限 ...
- spring boot结合shiro实现用户-角色-权限的控制(包含用户名密码登陆和手机号验证码登陆)
spring boot整合shiro实现权限校验 1.首先导入项目所需jar包 <parent><groupId>org.springframework.boot</gr ...
最新文章
- 使用内存映射文件在进程之间共享数据
- ASP.NET中级学习2
- 用CSS实现首字下沉效果,仿word的首字下沉
- JavaScript prototype 属性
- mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层如何执行吗?
- 小蜜团队万字长文 | 讲透对话管理模型最新研究进展
- 2020 年 7 个软件开发趋势
- 智慧城市要让市民有获得感
- 10.性能之巅 洞悉系统、企业与云计算 --- 网络
- 数字字符减去数字字符0就是数字
- 标签 'http' 已声明。标签名称在批查询或存储过程内部必须唯一。
- 基于android p的miui,小米8青春版终于迎来基于AndroidP的MIUI10系统,米粉欢呼
- tomcat安装及配置教程(保姆级)
- golang中的strings.ToLower
- iOS调用高德地图SDK
- w10系统打不开服务器共享打印机,win10系统无法共享打印机的方案
- 微信小程序getPhoneNumber获取手机号,解决code失效问题
- 差之毫厘:etcd 3 完美支持 HTTP 访问
- 思科交换机备份文件到服务器,CISCO交换机备份和恢复配置文件的方法
- 人工智能技术知识图谱
热门文章
- 微软亲手盖上IE棺材板:明年6月停用,慢且不安全,还因垄断被罚款170亿
- 《C++面向对象高效编程(第2版)》——3.13 采用语义
- Docker + gunicron + supervisord 部署python应用
- Hadoop HBase概念学习系列之HRegion服务器(三)
- Linux下使用Apache实现域名转发(Tomcat/JBOSS)
- Linux Kernel TCP/IP Stack — 协议栈发包处理流程
- 5GS 协议栈 — N1 接口的协议栈(NAS)
- 5G NGC — NEF Traffic Influence Service
- ETSI GS MEC 012,RNIS API
- Python 进阶_函数式编程