继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

慕田峪0738999
关注TA
已关注
手记 344
粉丝 88
获赞 494

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

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

建立一张表[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的介面,太概如下:

 

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP