用户与模块关系功能,您可以写成跟用户与角色关系一样。不过下面实现方法会看到更多的权限控制。

介面如下截图:

数据表结构如下:

代码

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[UsersModule](
    [UsersId] [int] NOT NULL,
    [ModuleId] [smallint] NOT NULL,
    [Purview] [int] NOT NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[UsersModule]  WITH CHECK ADD  CONSTRAINT [FK_UsersModule_Module] FOREIGN KEY([ModuleId])
REFERENCES [dbo].[Module] ([ModuleId])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[UsersModule] CHECK CONSTRAINT [FK_UsersModule_Module]
GO

ALTER TABLE [dbo].[UsersModule]  WITH CHECK ADD  CONSTRAINT [FK_UsersModule_Users] FOREIGN KEY([UsersId])
REFERENCES [dbo].[Users] ([UsersId])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[UsersModule] CHECK CONSTRAINT [FK_UsersModule_Users]
GO

接下来,我们得写分配权限的存储过程:

代码

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[usp_UsersModule_AssignModuleAction]
(
    @UsersId int,
    @ModuleId smallint,    
    @Browsing bit,
    @Searching bit,
    @Creating bit,
    @Editing bit,
    @Updating bit,
    @Deleting bit,
    @Erasing bit,
    @Submiting bit,
    @Auditing bit,
    @Reporting bit,
    @Receiving bit,
    @Delivering bit    
)
AS
BEGIN TRANSACTION
    DECLARE @Purview int =0    
    
    IF @Browsing = 1
        SET @Purview = @Purview + 1
    IF @Searching = 1
        SET @Purview = @Purview + 2
    IF @Creating = 1  
        SET @Purview = @Purview + 4
     IF @Editing = 1 
        SET @Purview = @Purview + 8
     IF @Updating = 1 
        SET @Purview = @Purview + 16
     IF @Deleting= 1  
        SET @Purview = @Purview + 32
     IF @Erasing = 1
        SET @Purview = @Purview + 64
     IF @Submiting = 1
        SET @Purview = @Purview + 128
     IF @Auditing = 1
        SET @Purview = @Purview + 256
     IF @Reporting = 1
        SET @Purview = @Purview + 512         
     --如果有更多操作权限,可以此添加 
      IF @Purview >0 AND @Browsing =0
        SET @Purview = @Purview +1
    
IF (SELECT count(*)  FROM [UsersModule] WHERE [UsersId] = @UsersId AND [ModuleId] = @ModuleId )>0
    BEGIN        
        UPDATE [UsersModule] SET [Purview]=@Purview WHERE [UsersId] = @UsersId AND [ModuleId] = @ModuleId 
        IF @@ERROR<>0            
            ROLLBACK TRANSACTION    
    END
ELSE
    BEGIN
        INSERT INTO [UsersModule] ([UsersId] ,[ModuleId],[Purview] ) VALUES (@UsersId ,@ModuleId ,@Purview)
        IF @@ERROR<>0            
            ROLLBACK TRANSACTION    
    END
        COMMIT TRANSACTION

GO

权限管理----用户与模块关系相关推荐

  1. 基于 Python/Vue/D2 实现的CRM管理系统(客户管理,产品管理,商机管理,合同管理,客户公海,权限管理等业务模块)

    目录 一.系统概述 业务模块 部署方式 二.效果展示 登录页面 客户页面 联系人 产品类目 产品 合同 消息中心 供应商 客户公海 三.关键代码 后端 http 使用 python django 后端 ...

  2. 权限管理,pymysql模块

    权限管理 权限管理重点 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL ...

  3. 转:权限管理——用户认证和用户授权

    转自: https://blog.csdn.net/xdd19910505/article/details/51926540 因为做了权限的项目经理,so,恶补一下一个权限框架:shiro.其实作为框 ...

  4. linux的用户及权限管理,用户及权限管理

    一.Linux用户.组的概念 1.用户 管理员:root,0 其他用户:1-65535 系统用户:1-499,守护进程获取资源进行权限分配 普通用户:500+,交互式登陆 2.组 管理员组:root, ...

  5. php 超级管理员,WordPress超级管理员功能,超权限管理用户,可修改登录名

    wordpress本身的用户管理是以博客用户为导向的,因此其后台修改用户信息仅限于博客用户的角度可以修改的信息,而管理员虽然可以修改其他用户信息,但有一个问题是不能修改用户名和昵称(这里的昵称和显示名 ...

  6. 权限管理——用户认证和用户授权

    因为做了权限的项目经理,so,恶补一下一个权限框架:shiro.其实作为框架首要目标是易于使用和理解.安全有时候是很复杂的,甚至是痛苦的,但框架没有必要这样.框架应该尽可能掩盖复杂的地方,露出一个干净 ...

  7. oracle中角色的用户和权限管理,用户角色与权限控制

    一.oracle中的用户 系统用户:sys.system(系统创建的用户) 登录命令:sqlplus sys/密码 as sysdba 备注:sys是oracle数据库中最高权限用户,角色为sysdb ...

  8. mysql - user/privileges/用户与权限/用户权限/管理用户权限

    目录 1.用户权限有哪些 2.用户权限操作语句 3.授权说明与授权原则 1.用户权限有哪些 总共28个权限 mysql数据库中的3个权限表:user .db. host 权限表的存取过程是: 1)先从 ...

  9. ASP.NET学生信息管理系统-权限管理-用户资料

    程序测试空间:http://asp.igozjj.com 边缘博客%C3[&F g,F#K+RM [p.rl#[ 用户资料,是添加用户的, Goq A8i1 每一个用户,都含有编号 用户姓名 ...

  10. linux根-文件系统-目录管理-文件管理-用户及权限详解-用户组-用户管理-权限管理...

    一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...

最新文章

  1. 【转】老程序猿给新程序猿的13点建议
  2. java 8位随机数_JAVA中生成指定位数随机数的方法总结
  3. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-目录
  4. (23)Vue.js组件介绍
  5. hibernate基本类型映射
  6. “OSPF” DR与BDR
  7. 中国数控机床行业市场竞争态势及投资战略规划报告2022-2028年版
  8. 自抗扰控制matlab仿真,自抗扰控制器的simulink建模与仿真.pdf
  9. c语言上机试题8,计算机考试二级C语言上机试题下[8]
  10. Javascript和C#正则只保留英文、数字、汉语、空格
  11. c盘找不到appdata
  12. javascript书签工具
  13. Slider网站欣赏
  14. 计算机发展简史的ppt教程,计算机发展简史PPT.ppt
  15. 拼多多——多多的字符变换
  16. 2021 => KVM冷迁移与热迁移
  17. GPS坐标系与实际地图坐标系
  18. android 账号同步功能吗,android账号管理与同步机制
  19. 首席新媒体黎想教程:短视频内容运营方法论
  20. LeetCode 21. 合并两个有序链表(链表)

热门文章

  1. ArcGIS学习总结(16)——反距离权重法插值及批处理(IDW)
  2. android ui自动化 mock,移动端自动化多机并行测试-数据 mock 篇
  3. Docker与容器化-04-Docker私有仓库与镜像迁移备份
  4. Mybatis-01-简介及入门
  5. 解构流存储 — Pravega,与 Flink 构建端到端的大数据流水处理线
  6. android-gradle-plugin3.0.1源码分析
  7. 图解微服务技术架构体系
  8. 在php定界符中,PHP中的定界符 - ho俊的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. php实现观看记录,PHP实现浏览历史记录
  10. imp 只导表前10条数据_2020年玉石行情,从10条数据就能略窥一二