zoukankan      html  css  js  c++  java
  • 权限管理用户与模块关系

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

    介面如下截图:

    数据表结构如下:

    代码
    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
  • 相关阅读:
    angular6跨域问题proxy.conf.json
    angular2 防止刷新页面 参数丢失
    自定义修改table样式 scoped会影响
    angular ngfor和ngif指令共用
    yum 是轮船发动机,brew 是汽车发动机,不能混用。
    Vue watch 监听 computed
    vue 路由跳转,参数消失问题
    vue 使用:class切换高亮 点击路由跳转 上个组件的点击事件保存的参数 在下一次重复进入这个组件的时候 默认值都已经还原了 得通过路由跳转的时候 把上个组件的状态通过路由保存下来 通过下一次进入这个组件的时候 获取路由 渲染当前页面的:class 进行高亮
    函数防抖 函数节流
    vue router-view router-link RouterView【命令视图】和RouterLink【命令路线】本身是两个组件。 命名路由
  • 原文地址:https://www.cnblogs.com/insus/p/1776623.html
Copyright © 2011-2022 走看看