【问题标题】:Control User Permission in C# windows application在 C# windows 应用程序中控制用户权限
【发布时间】:2013-03-14 01:37:15
【问题描述】:

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

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

【问题讨论】:

    标签: c# sql windows permissions


    【解决方案1】:

    一般来说,我所看到的大致如下:

    有一个类似这样的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
    

    【讨论】:

    • 有没有使用 sql 的解决方案?我的意思是为每个应用程序用户在 sql 中创建用户并定义访问级别?
    • @franchescototti 以上答案在 SQL 中。所有数据都存储在 SQL 中。实际检查可以分别在SPROC 或您的代码中。
    • @franchescototti 我已经用一些示例 SQL 更新了我的答案
    猜你喜欢
    • 2018-11-23
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多