asp.net mvc授权属性重定向

时间:2015-02-26 14:01:30

标签: c# asp.net-mvc

在我的应用程序中,我创建了一个像这样的自定义属性

public class AdminAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);
        if (!isAuthorized || Auth.CurrentAdminUser == null)
        {
            return false;
        }
        else
        {
            return (SuperAdmin.Get(Auth.CurrentAdminUser.Id) != null) ? true : false;
        }
    }
}

它工作正常,但我想要的是根据用户是否未登录进行重定向,然后登录页面,如果用户已登录但不是超级管理员,请将其取消授权页。

现在发生的是所有未经授权的东西都通过web.config文件重定向到此页面,

<authentication mode="Forms">
  <forms loginUrl="~/Site/NotAuthorize" timeout="2880" />
  <!-- this is where we can set up that if you are not authenticated, where should you go then?-->
</authentication> 

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:7)

您应该覆盖HandleUnauthorizedRequest

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    base.HandleUnauthorizedRequest(filterContext);

    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "xxx", action = "xxx", area = "" }));
}