0

WebForms と Asp.Net ルーティングを使用しています。

メンバー フォルダーにセキュリティを実装しようとするときは、次の手順に従います。

http://blogs.msdn.com/b/mikeormond/archive/2008/06/21/asp-net-routing-and-authorization.aspx

  private IHttpHandler GeneratePage(string VN, RequestContext RC)
  {
    string virtualPath
      = string.Format("~/Members/{0}.aspx", VN);

    if (UrlAuthorizationModule.CheckUrlAccessForPrincipal(virtualPath,
      RC.HttpContext.User,
      RC.HttpContext.Request.HttpMethod))
    {
      if (virtualPath != null)
      {
        return (Page)BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page));
      }
    }
    else
    {
      throw new SecurityException();
    }

    return null;
  }
}

ただし、セキュリティ例外をスローするだけではなく、ログイン ページにリダイレクトしたいと考えています。a をハードコーディングしResponse.Redirectたくありませんし、とにかくこれが正しい方法だとは思いません。

認可エンジンに制御を渡し、デフォルトのログインページにリダイレクトする「適切な」方法は何ですか?

4

1 に答える 1

1

両方を持つことはできません。

例外をスローすると、コード パスが終了します。

FormsAuthentication.RedirectToLoginPage(string extraQueryString)または、ログイン ページで問題をユーザーに通知できる引数を呼び出し て渡すこともできます。

例えば

FormsAuthentication.RedirectToLoginPage("error=authorization-failure")

もちろん、これを認識するためにログイン ページにコードを記述する必要があります。

于 2010-09-23T02:57:58.813 に答える