2

ASP.Netでフォーム認証方法を使用していますが、問題は「.aspx」ファイルのみを保護することです。「kcfinder」フォルダ内の「.php」ファイルを認証されていないユーザーから保護しようとしています。

このクラスを「App_Code」フォルダーに実装しました。

public class KCChecker
{
        public static void Process(HttpApplication Application)
    {
           HttpRequest Request = Application.Context.Request;
           HttpResponse Response = Application.Context.Response;
           string url = Request.Path.ToLower();
           if (url.IndexOf("/kcfinder/") == 0 && !HttpContext.Current.User.Identity.IsAuthenticated)
            {
            Response.Redirect("/");
            }
        }
}

問題は、常に「オブジェクト参照がオブジェクトのインスタンスに設定されていない」ということです。にHttpContext.Current.User.Identity.IsAuthenticated。に変更しようとしましたApplication.Context.User.Identity.IsAuthenticatedが、それでも同じエラーが表示されます。

このカスタムモジュールのプロセス関数でユーザーオブジェクトにアクセスする方法はありますか?

4

2 に答える 2

2

以下をweb.configファイルに追加します。

<modules runAllManagedModulesForAllRequests="true" />
于 2012-06-27T08:50:24.803 に答える
1

HttpApplication.PostAuthenticateRequestイベント

PostAuthenticateRequestのイベントハンドラーをHttpModuleに追加し、そこからProcess(HttpApplication)メソッドを呼び出します。

public class AuthModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.PostAuthenticateRequest += new EventHandler(context_PostAuthenticateRequest);
    }

    public void Dispose() { }

    void context_PostAuthenticateRequest(object sender, EventArgs e)
    {
        var isAuthenticated = ((HttpApplication) sender).Context.User.Identity.IsAuthenticated;
    }
}
于 2012-06-27T02:39:40.833 に答える