2013-03-24 59 views
1

我已经使用C#和SQL 2008设计了Windows应用程序。 现在,我想控制该用户可以访问哪个部分及其权限。在C#窗口应用程序中控制用户权限

所以,我想知道在sql中设计表并为每个用户设置权限还是有其他解决方案?

请与我分享你的想法。

回答

0

一般情况下,我所看到的东西大致如下:

有一个tblUser表是这样的:

tblUser 
    UserId 
    UserName 
    etc... 

一个角色表:

tblRole 
    RoleId 
    Name 

和一个链接表:

tblUserRole 
    UserId 
    RoleId 

在您的应用程序中,您将检查当前用户是否在tblUserRole表中具有相应的角色。如果是这样,允许当前用户使用该功能,否则显示错误消息,禁止用户条目等等

MS SQL例如,你可以有Stored Procedure以下几种类型:

添加用户

CREATE PROCEDURE spAddUser 
    @UserName AS nvarchar(256) 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

INSERT INTO tblUser 
    (UserName) 
    VALUES(@UserName) 

SELECT SCOPE_IDENTITY() AS 'Id' 
END 
GO 

添加用户角色

CREATE PROCEDURE spAddUserRole 
@UserId AS int, 
@RoleId As int 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

INSERT INTO tblUserRole 
    (UserId, RoleId) 
    VALUES(@UserId, @RoleId) 
END 
GO 

用户是否有作用

CREATE PROCEDURE spDoesUserHaveRole 
@UserId AS int, 
@RoleId As int, 
@HasRole AS bit OUTPUT 
AS 
BEGIN 
-- SET NOCOUNT ON added to prevent extra result sets from 
-- interfering with SELECT statements. 
SET NOCOUNT ON; 

SELECT @HasRole = COUNT(UserId) > 0 FROM tblUserRole 
    WHERE UserId = @UserId AND 
      RoleId = @RoleId 
END 
GO 
+0

有没有使用SQL的任何解决方案?我的意思是在sql中为每个应用程序用户创建用户并定义访问级别? – 2013-03-25 08:32:10

+0

@franchescototti上面的答案在SQL中。所有的数据都存储在SQL中。实际检查可以分别在'SPROC'或你的代码中。 – rhughes 2013-03-25 08:39:52

+0

@franchescototti我已经更新了一些示例SQL – rhughes 2013-03-25 08:51:31

相关问题