我想在我的控制器方法上使用[Authorize(Roles =“Admin”)]标签。
如果用户不是管理员,我想将此用户返回到我的登录屏幕。 将用户返回到我的登录页面的默认行为是使用Get url将我的用户重新路由到“Account / Login”。
问题是,我网站的子页面都是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");
}
}
}
答案 0 :(得分:1)
显然,通过删除
解决了问题[Acceptverbs(HttpVerbs.Post)]
我的帐户控制器的登录方法的属性。
这样我们甚至不必覆盖AuthorizeAttribute
:)
答案 1 :(得分:0)
我在Microsoft.WebPages.PreApplicationStartCode.SetupFormsAuthentication()
只需添加一个名为“loginUrl”的 appSetting 来指定登录操作:
<add key="loginUrl" value="~/Account/LogOn"/>