.Net MVC 4使用Windows身份验证 - 重定向未授权用户

时间:2015-06-12 21:17:05

标签: c# asp.net-mvc asp.net-mvc-4

我有一个使用Visual Studio 2012创建的MVC 4 Intranet应用程序。我使用了WindowsAuthentication,它按预期对用户进行身份验证。在某些操作中,我使用Authorize属性将用户限制为某些角色。当用户单击调用用户未授权的控制器操作的链接时,会弹出“需要身份验证”对话框。当我使用没有授权的帐户登录时,它会继续弹出对话框。相反,我想这样:

  1. 如果用户无权访问该页面,请按当前方式弹出对话框。
  2. 当用户输入有效但未被授权访问该页面的登录时,会重定向到另一个页面,说明禁止访问。
  3. 我该怎么做呢?作为相关信息,我使用所讨论的方法here

    定制了角色提供者

1 个答案:

答案 0 :(得分:2)

为此,您需要自定义授权才能自行处理未经授权的情况。

你需要一个像这样的方法:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAuthenticated)
        {
            filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}