0

目標は、Session変数がnullまたは空である限り、すべてのユーザーを各httpRequestのカスタムセキュリティページにリダイレクトすることです。

Global.asaxで

このメソッドにより、次のエラーが発生します。

このWebページにはリダイレクトループがありますWebページのリダイレクトが多すぎます。このサイトのCookieをクリアするか、サードパーティのCookieを許可すると、問題が解決する場合があります。そうでない場合は、サーバー構成の問題であり、コンピューターの問題ではない可能性があります。

protected void Application_PostAuthorizeRequest()
{
  if ((Session["SecurityCodeApproved"] == null || !(bool)Session["SecurityCodeApproved"]))
  {
    Response.RedirectToRoute("Security");
  }
}
4

2 に答える 2

1

セッション Cookie が設定されているかどうかを確認し、設定されていない場合は再度リダイレクトして、同じページにリダイレクトしているようです。セッション Cookie が設定され、設定されていない限り、継続的にリダイレクトされます。他の場所にリダイレクトするか、Cookie を設定してループを解消する必要があります。

于 2012-11-01T16:59:31.200 に答える
1

Global.asax でこれを行わないでください。お気づきのように、イベントが発生するたびに常にセッションがあるとは限らないためです。また、コードは、css、画像、JavaScript などのリソースに対するリクエストを含む、すべてのリクエストで起動します。やりたいことは、グローバル フィルター属性を使用してロジックを実行することです。または、Web フォームを使用している場合は、これをページ レベルで実行します。

フィルタが実行されると、必要なリクエストとセッション オブジェクトを持つ FilterContext が保証されます。

その後、セキュリティ ページにリダイレクトできますが、フィルタ属性がセキュリティ ポイントで無視されていることを確認してください。

于 2012-11-01T19:08:35.973 に答える