2009-08-21 10 views
3

ODBCDataSetを使用していくつかのデータベースフィールドを変更するための簡単な.NET 3.5アプリケーションがあります。今度は、Feature Creepが、ユーザーのデータベース権限に基づいてタブやその他のコントロールを非表示にするかどうかを尋ねています。データベースへのユーザーのアクセス許可をテストする方法

理想的には、Windowsユーザーグループを使用してSQL Server上でのみアクセス許可を制御したいと考えています。このアプリケーションには、組み込みの認証またはアクセス許可システムはありません。データベース接続。したがって、ユーザーのタブを表示するかどうかを決定するためのアクセス許可を「テスト」する必要があります。たとえば、特定のテーブルに対して「書き込み」権限を持っている場合、そのテーブルを編集するためのタブが表示されます。そうでなければ、タブはそれらのためにロードされません。

本当に私は助けが必要な部分です:ODBCDataSetへのユーザーのアクセス許可を一覧表示またはテストするにはどうすればいいですか?

+2

フィーチャクリープ...ディルバート文字のように聞こえます。ユーザーの権限を別のテーブルに保存できますか? – Beth

+0

さらに複雑なケースの1つは、ユーザーが「読み取り/選択」権限を持っていても「書き込み/更新」権限がない場合です。特に、テーブルに無関係のレコードがない場合は、実際の更新を行わないでください。 しかし、ストアドプロシージャまたは別のテーブルを追加することは無害です。 Hrm ...私はそれが好きです。 ああ、フィーチャークリープはディルバートのゲストキャラクターだったと思います。私はいつもそれを具現化するという考えが好きだった。 :) – ewall

答えて

1

いつでも、DBへのコールを試してみることができます。これは、DBにユーザーを認証し、アクセス可能なすべてのテーブルを返すストアドプロシージャを作成します。

+0

好奇心で終わったもの。私はユーザーのアクセスを照会する現実を研究する時間を取らなかったので、回避策があることを知りました(つまり、テストの更新/選択/など)。 – madcolor

2

あなたのアプリがWindowsユーザーグループを認識することに反対していますか?一般に、データベースと.NETコードの両方で話すように、セキュリティのために常にADグループを使用します。機能の表示/非表示がまさにポイントです。さらに、何らかの理由で表示される機能を取得できたとしても、データベースはその役割をさらにチェックし、アクションを防ぐことができます。

個人的には、.NETコードのロールメンバーシップをチェックするのが最も簡単な方法です(IsInRoleメソッドでこれを行うことができます)。

ただし、グループ名を認識できない、または変更したい場合は、アプリがグループ名を認識できない理由がある場合は、わかります。おそらくODBCメソッドのチェックはありません。どのメソッドも独自仕様やデータベースに依存する可能性が高いため(SQL Serverなど)、それ以外の場合は、挿入/更新コマンドを実行するコードを記述する必要があります既知のテストレコードで、それがSqlExceptionと一緒に戻ってくるかどうかを確かめてみてください。

関連する問題