ASP MVC [授权]返回一个帖子,而不是获取的(Asp MVC [Authorize] to r

2019-09-21 11:14发布

我想用[授权(角色=“管理员”)在我的控制器方法的标签。

如果用户是不是管理员,我想该用户回到我的登录屏幕。 用户回到我的登录页面的默认行为是重新路由使用此网址我的用户“账号/登录”。

问题是,我的网站的子页面是由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");
    }
  }
}

Answer 1:

显然,问题seemes通过删除解决

[Acceptverbs(HttpVerbs.Post)]

属性在我的账户控制器的登录方法。

这样,我们甚至没有覆盖AuthorizeAttribute

:)



Answer 2:

我发现一个解决方案Microsoft.WebPages.PreApplicationStartCode.SetupFormsAuthentication()

人们只需要添加一个名为“loginUrl”的appSetting指定登录操作:

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


文章来源: Asp MVC [Authorize] to return a Post instead of a Get