单用户多角色权限的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) 没有此权限的记录 允许
时间: 2024-10-30 18:31:38

单用户多角色权限的MSSQL实现的相关文章

急!求救!根据登入用户的角色权限显示该显示的树形菜单

问题描述 在做OA系统时,用户登陆后台后,会自动根据用户的角色里的权限,来显示那些树形菜单的功能如何实现?比如说超级管理员会显示全部菜单,而普通用户只会显示"签到/签退""便签"等等.谢谢了.. 解决方案 解决方案二:这个简单啊写一个判断默认拥有访问某个模块的方法!至于方法是怎么实现的也很简单你要是有兴趣可以M我我告诉你!然后登陆后把那人的ID传进去,就可以得到该人能访问的模块的List然后在jsp界面循环List,动态生成菜单!这里也有点技巧毕竟有的是一级模块有的

用户+角色+权限

角色与用户权限的学习  1.说明 oracle用户:每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表.视图和其他资源. Oracle角色(role)就是一组权限(privilege).                用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户.一个用户也可以直接给其他用户授权. 数据库系统权限(Database System Privilege)允许用户执行特定的命令集.                例如,CREATE TABLE权限允许用户创建

springBoot+springSecurity 数据库动态管理用户、角色、权限

  使用spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过,并经过验证: 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置,目前这种方式已经实现,并经过验证. 三种是细分角色和权限,并将用户.角色.权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器, 并分别实现Acce

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(22)-为用户设置角色

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(22)-为用户设置角色 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装          (5):前台Jquery easyUI实现   (6):EF上下文实例管理    (7):DBSession的封装   (8):DBSession线程内唯一          (9):TT摸版

关于用户角色权限的一点想法(1)

标题    关于用户角色权限的一点想法(1)    biggie(原作) 关键字    关于用户角色权限的一点想法 前言: 权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断"Who对What(Which)进行How的操作"的逻辑表达式是否为真.针对不同的应用,需要根据项目的实际情况和具体架构,在维护性.灵活性.完整性等N多个方案之间比较权衡,选择符合的方案. 目标: 直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,系统不辞劳苦的实现了组

Oracle学习(十八) 用户、角色和权限信息的视图总结

Oracle在sys用户方案中内置了许多视图,我们可以利用它们方便地查看系统相关的信息.在调用这 些视图的时候我们可以不加schema,以下是一些 关于用户.角色和权限信息的视图总结: (1)all_users视图:可以查看当前用户可以看到的所有用户 (2)dba_users视图:可以查看数据库中所有的用户信息 (3)user_users视图:可以查看当前用户的用户信息 (4)dba_ts_quotas视图:可以查看用户的表空间限额情况 (5)user_password_limits视图:可以查

继承-mvc4 用户和角色的权限 控制

问题描述 mvc4 用户和角色的权限 控制 我在项目中 现在要加 角色 和 用户的 访问权限 在网上也看到很多例子 我是这样做的 我在我的 父类里 先把 角色 和 用户的 访问页面 都真理好 contronl里继承这个类 然后判断这个用户和角色是否可以访问这个页面 如果不行想让它直接跳转到 error 页面来提示,可以 怎么都不能跳转 public void MParent() { var routeDate = HttpContext.Request.RequestContext.RouteD

Oracle中sys和system用户、系统权限和角色的区别_oracle

1)最重要的区别,存储的数据的重要性不同 [sys]  所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改.sys用户拥有dba,sysdba,sysoper等角色或权限,是oracle权限最高的用户. [system]  用户用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息.system用户拥有普通dba角色权限. 2)其次的区别,权限的不同. [system]用户只能用nor

ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装       (5):前台Jquery easyUI实现   (6):EF上下文实例管理    (7):DBSession的封装   (8):DBSession线程内唯一       (9):