私のコントローラメソッドで[Authorize(Roles = "Admin")]タグを使いたいです。Asp MVC [承認] Getの代わりに投稿を返す
ユーザーが管理者でない場合は、このユーザーをログイン画面に戻したいと考えています。 ユーザーをログインページに戻す際のデフォルトの動作では、Get URLを使用してユーザーを「アカウント/ログイン」にリルートします。
問題は、私のウェブサイトのサブページはすべて、ログイン画面を含むAjax呼び出しによって更新された部分的なビューです。
私の質問は です。リダイレクトの代わりにポストリダイレクトを返すように、下のクラスを変更することはできますか?
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");
}
}
}
したがって、AcceptVerbs属性を使用することができます。 [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)] – keithm