为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
SQL Server

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

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

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

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消