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