2013-03-24 64 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

相關問題