0

テーブルからデータを表示するエンティティ フレームワーク アプリケーション内に汎用ハンドラーを作成しました。誰かがURLなどで直接アクセスしようとした場合に備えて、ハンドラーを保護したいと考えています。これが別のアプリケーションから呼び出されたときにデータを処理して表示する前に認証するユーザー名とパスワードをどこにどのように書き込むのですか (呼び出し元のアプリケーションにはユーザー名とパスワードがあります)

 public class MyDatahandler: IHttpHandler
{


    public void ProcessRequest(HttpContext context)
    {
        context.Response.Clear();
        context.Response.ContentType = "text/plain";

        Mydatalogic a = new dataLogic;
        a.DisplayView();

    }

}

呼び出し要求は request.Credentials = new NetworkCredential(userName, password); を使用しています。どこで、どのユーザー名とパスワードを使用するかについて相互合意があります。これらをハンドラーのどこにマップしますか?

4

1 に答える 1

0

探しているのはAuthorizeAttributeです。これにより、役割ベースのアクセス許可を使用してクラスとメソッドにアクセスできます。

ページをロックダウンするのに役立ついくつかの追加属性を次に示します。

[HttpPost] //URL Post method only

[HttpGet] //URL Post method only

[ChildActionOnly] //Not accessible via URL

編集

誰かが URL を使用して直接アクセスしようとした場合に備えて、ハンドラーを保護する必要がありますよね? これを行うには、HTTP_REFERERMyDatahandler_ProcessRequest 内からサーバー変数を確認します。ユーザーが本来あるべき場所から来ていない場合は、HTTP 403 エラーをスローします。

web.config で、次のように調整してみてください。

<authorization>
    <allow verbs="POST" users="*"/>
    <deny verbs="GET" users="*"/> 
</authorization> 

これにより、URL パラメータを使用した直接の URL アクセスが防止されます。

于 2015-07-01T22:12:25.093 に答える