0

誰かが私を正しい方向に向けることができるのだろうか. 現在、データベースに SQL Server 2005 を使用する ASP.NET アプリケーションの更新を検討しています。特定のユーザーがデータベースから特定のレコードを作成、更新、削除するのを防ぐ、堅牢で一貫した機能を提供する必要があります。

残念ながら、このアプリケーションは OO の概念を使用して作成されておらず、代わりに Web ページのコード ビハインド ファイルから直接呼び出される多くのデータ アクセス ストアド プロシージャを優先しています。ストアド プロシージャが非常に多いため、データベース トリガーを調査してセキュリティを実装することをお勧めします。

質問は; spを実行した特定のアプリケーションユーザー(dbのカスタムユーザーアカウントテーブルを使用して管理)をdbトリガーが認識することは可能ですか?必要なのは ID だけです。データベースへの接続に使用される接続文字列はすべてのユーザーで同一です (web.config から取得)。ユーザーを偽装するか、トリガーにアクセスできる特定の変数を設定する方法はありますか?

4

1 に答える 1

1

アプリケーションが SqlConnection を使用してユーザーを「ログイン」し、まったく同じ SqlConnection を使用してデータ アクセス/更新を実行する場合は、 CONTEXT_INFO(). 「ログイン」手順でコンテキストを設定し、データ アクセス/更新手順で確認します。セッション コンテキスト情報の使用を参照してください。

ただし、アプリケーションが SqlConnection を使用して「ログイン」し、結果を (おそらく Cookie または ASP セッション状態で) キャッシュし、別の SqlConnection を使用してデータにアクセスする場合、必要なログイン情報にアクセスする方法はありません。アプリケーションのサポート。SqlConnection オブジェクトが作成されるすべての場所を見つけて、ファクトリ パターンを使用するようにリファクタリングできる場合は、使用するために呼び出し元に返す前に、コンテキスト情報を設定する呼び出しで開いている各接続を拡張できます。これも機能します。最小限のアプリケーション変更。

于 2012-10-22T21:01:27.897 に答える