1

私はすでにC#とSQL 2008を使用してWindowsアプリを設計しました。次に、そのユーザーがどの部分とそのアクセス許可にアクセスできるかを制御したいと思います。

だから、私はSQLでテーブルを設計し、各ユーザーの権限を設定する方が良いのか、それとも他の解決策があるのか​​知りたいですか?

4

1 に答える 1

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
于 2013-03-24T15:21:29.647 に答える