我想在我的控制器方法上使用[Authorize(Roles =" Admin")]标签。

如果用户不是管理员,我想将此用户返回到我的登录屏幕。 将用户返回到我的登录页面的默认行为是将我的用户重新路由到“帐户/登录”按钮。使用获取网址。

问题是,我网站的子页面都是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(HttpVerbs.Post)]
我的帐户控制器的登录方法的

属性。

这样我们甚至不必覆盖AuthorizeAttribute

:)

其他提示

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

只需添加名为“loginUrl”的 appSetting 即可。指定登录操作:

<add key="loginUrl" value="~/Account/LogOn"/>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top