1
我已經使用C#和SQL 2008設計了Windows應用程序。 現在,我想控制該用戶可以訪問哪個部分及其權限。在C#窗口應用程序中控制用戶權限
所以,我想知道在sql中設計表併爲每個用戶設置權限還是有其他解決方案?
請與我分享你的想法。
我已經使用C#和SQL 2008設計了Windows應用程序。 現在,我想控制該用戶可以訪問哪個部分及其權限。在C#窗口應用程序中控制用戶權限
所以,我想知道在sql中設計表併爲每個用戶設置權限還是有其他解決方案?
請與我分享你的想法。
一般情況下,我所看到的東西大致如下:
有一個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中爲每個應用程序用戶創建用戶並定義訪問級別? – 2013-03-25 08:32:10
@franchescototti上面的答案在SQL中。所有的數據都存儲在SQL中。實際檢查可以分別在'SPROC'或你的代碼中。 – rhughes 2013-03-25 08:39:52
@franchescototti我已經更新了一些示例SQL – rhughes 2013-03-25 08:51:31