2

画像アクセス制限にAuthorizeImageイベントハンドラーを追加しました。ユーザー名と認証ステータスを確認しようとしたときに、次のことに気づきました。

以下は例外にはなりませんが、それを破るようです。認証されているかどうかに関係なく、画像が見つからない場合のデフォルトのアイコンが表示されます。this.User=同じ結果をテストしました。HttpContext.Current.User=同じ結果

Config.Current.Pipeline.AuthorizeImage += delegate(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e)
{
    if (context.User.Identity.IsAuthenticated) { context.Response.Redirect("http://db2.stb00.s-msn.com/i/AF/263B63C5E656379CEE93E7A8692EC7.gif"); }    
};

以下は問題なく動作します(this.UserとHttpCOntext.Current.Userも同様です)

Config.Current.Pipeline.AuthorizeImage += delegate(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e)
{
    context.Response.Redirect("http://db2.stb00.s-msn.com/i/AF/263B63C5E656379CEE93E7A8692EC7.gif"); 
};

これは常にリダイレクトします

Config.Current.Pipeline.AuthorizeImage += delegate(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e)
{
    if (context.User == null)
        context.Response.Redirect("http://db2.stb00.s-msn.com/i/AF/263B63C5E656379CEE93E7A8692EC7.gif");
};

Application_Startでテストを開始しましたが、実際にはApplication_PostAuthenticateRequestも試しました。結果は同じですが。カスタムコードを介して認証しますが、標準のフォーム認証を使用してCookieを設定します。[承認]はアプリケーションで正常に機能します。ここで何がうまくいかなかったのかについての提案はありますか?

4

1 に答える 1

4

サーバーは、.aspx、.ashxなどの特定の要求拡張子に対してのみFormsAuthenticationModuleを実行するように構成されています。これを解決するには2つの方法があります。

  1. (統合モードの場合) FormsAuthenticationModuleを削除して再度追加し<system.webServer> <modules>、precondition="managedHandler"属性を削除します。
  2. RAMMFARを有効にする(runAllManagedModulesForAllRequests)

この投稿には、#1と#2の実装に関する詳細が含まれています。

IIS 7.5でASP.NETフォーム認証を使用して静的ファイルを保護するにはどうすればよいですか?

于 2012-07-31T12:04:13.230 に答える