1

コントローラー メソッドで [Authorize(Roles="Admin")] タグを使用したいと考えています。

ユーザーが管理者でない場合、このユーザーをログイン画面に戻したいと思います。ユーザーをログイン ページに戻すデフォルトの動作は、Get URL を使用してユーザーを「アカウント/ログイン」に再ルーティングすることです。

問題は、私の Web サイトのサブページが、ログイン画面を含め、すべて Ajax 呼び出しによって更新された部分的なビューであることです。

私の質問は次のとおり です。以下のクラスを変更して、get リダイレクトの代わりに post リダイレクトを返すことは可能ですか?

public class AjaxAuthorizeAttribute : AuthorizeAttribute
{
  override public void OnAuthorization(AuthorizationContext filterContext)
  {
    base.OnAuthorization(filterContext);
    // Only do something if we are about to give a HttpUnauthorizedResult and we are in AJAX mode.
    if (filterContext.Result is HttpUnauthorizedResult && filterContext.HttpContext.Request.IsAjaxRequest())
    {
      filterContext.Result =  new RedirectResult("../Account/Login");
    }
  }
}
4

2 に答える 2

1

どうやら問題は削除することで解決したようです

[Acceptverbs(HttpVerbs.Post)]

Account コントローラーの Login メソッドの属性。

この方法では、AuthorizeAttribute をオーバーライドする必要さえありません。

:)

于 2009-07-30T14:03:05.643 に答える
0

私は解決策を見つけましたMicrosoft.WebPages.PreApplicationStartCode.SetupFormsAuthentication()

ログイン アクションを指定するには、「loginUrl」という名前のappSettingを追加するだけです。

<add key="loginUrl" value="~/Account/LogOn"/>
于 2011-08-23T10:36:36.307 に答える