Asp.net mvc Asp MVC[授权]返回Post而不是Get

Asp.net mvc Asp MVC[授权]返回Post而不是Get,asp.net-mvc,post,get,attributes,authorize,Asp.net Mvc,Post,Get,Attributes,Authorize,我想在我的控制器方法上使用[Authorize(Roles=“Admin”)]标记 如果用户不是管理员,我希望将该用户返回到我的登录屏幕。 将用户返回到我的登录页面的默认行为是使用Get url将我的用户重新路由到“帐户/登录” 问题是,我的网站的子页面都是由Ajax调用刷新的部分视图,包括我的登录屏幕 所以我的问题是: 是否可以更改下面的类以返回post重定向而不是get重定向 public class AjaxAuthorizeAttribute : AuthorizeAttribute {

我想在我的控制器方法上使用[Authorize(Roles=“Admin”)]标记

如果用户不是管理员,我希望将该用户返回到我的登录屏幕。 将用户返回到我的登录页面的默认行为是使用Get url将我的用户重新路由到“帐户/登录”

问题是,我的网站的子页面都是由Ajax调用刷新的部分视图,包括我的登录屏幕

所以我的问题是: 是否可以更改下面的类以返回post重定向而不是get重定向

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(HttpVerbs.Post)]
属性设置在我的帐户控制器的登录方法上

这样我们甚至不必重写authorized属性


:)

显然,通过移除

[Acceptverbs(HttpVerbs.Post)]
属性设置在我的帐户控制器的登录方法上

这样我们甚至不必重写authorized属性


:)

我在
Microsoft.WebPages.PreApplicationStartCode.SetupFormsAuthentication()中找到了一个解决方案。

只需添加名为“loginUrl”的应用设置即可指定登录操作:

<add key="loginUrl" value="~/Account/LogOn"/>

我在
Microsoft.WebPages.PreApplicationStartCode.SetupFormsAuthentication()中找到了一个解决方案。

只需添加名为“loginUrl”的应用设置即可指定登录操作:

<add key="loginUrl" value="~/Account/LogOn"/>


您仍然可以如此使用AcceptVerbs属性:[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]您仍然可以如此使用AcceptVerbs属性:[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]