• 权限管理用户与角色关系


    权限管理,必涉及到用户与角色关系。

    下面的做法,是对某一个用户授权拥有某个角色。一个用户可拥有多个角色。

    建立一张表[UsersRole]其中有三个字段,[UsersId]注册用户ID,[RoleId]角色表的主ID,还有一个字段[IsEnable]数据类型为BIT是记录用户是否拥有此角色。

    表的结构如下:

    代码
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[UsersRole](
        
    [UsersId] [int] NOT NULL,
        
    [RoleId] [smallint] NOT NULL,
        
    [IsEnable] [bit] NULL
    ON [PRIMARY]

    GO

    ALTER TABLE [dbo].[UsersRole]  WITH CHECK ADD  CONSTRAINT [FK_UsersRole_Role] FOREIGN KEY([RoleId])
    REFERENCES [dbo].[Role] ([RoleId])
    ON UPDATE CASCADE
    ON DELETE CASCADE
    GO

    ALTER TABLE [dbo].[UsersRole] CHECK CONSTRAINT [FK_UsersRole_Role]
    GO

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

    ALTER TABLE [dbo].[UsersRole] CHECK CONSTRAINT [FK_UsersRole_Users]
    GO

    接下来,写分配角色存储过程:

    代码
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO


    CREATE PROCEDURE [dbo].[usp_UsersRole_AssignRole]
    (
        
    @UsersId int,
        
    @RoleId smallint,    
        
    @IsEnable bit
    )
    AS
    BEGIN TRANSACTION
        
    DECLARE @err int
    --判断[UsersRole]表中,此用户与此角色是否存在记录    
    IF (SELECT count(*)  FROM [UsersRole] WHERE [UsersId] = @UsersId AND [RoleId] = @RoleId ) > 0
        
    BEGIN        
            
    --如果存在,作更新动作
            UPDATE [UsersRole] SET [IsEnable]= @IsEnable WHERE [UsersId] = @UsersId AND [RoleId] = @RoleId 
            
    SET @err=@@ERROR
            
    IF @err<>0            
                
    ROLLBACK TRANSACTION    
        
    END
    ELSE
        
    BEGIN
            
    --如果不存在,做插入记录动作
            INSERT INTO [UsersRole] ([UsersId] ,[RoleId],[IsEnable] ) VALUES (@UsersId ,@RoleId ,@IsEnable)
            
    SET @err=@@ERROR
            
    IF @err<>0            
                
    ROLLBACK TRANSACTION    
        
    END
    COMMIT TRANSACTION

    GO

    在asp.net的介面,太概如下:

  • 相关阅读:
    《网络攻防第四周作业》
    《网络攻防第三周作业》20179313
    15.javaweb XML详解教程
    小程序新功能:直接进入内嵌网页!
    为什么要创业?听听扎克伯格怎么说
    面试官:“还有什么问题问我吗?”我...
    双十一为何规则复杂,套路多多
    如何设置电信光猫?图解手把手教你(超级详细)
    14.javaweb AJAX技术详解
    android黑科技系列——自动注入代码工具icodetools
  • 原文地址:https://www.cnblogs.com/insus/p/1776453.html
Copyright © 2020-2023  润新知