MVC 5 Windows 身份验证重定向

MVC 5 Windows Authentication redirect

我创建了一个 MVC 5 项目并使用 Windows 身份验证。 我的问题是,每当用户的操作被操作属性 [Authorize(Roles = "Roelabc")] 拒绝时,浏览器将弹出带有 username/passwor 的登录警报。 现在我不想弹出这个窗口,我只想在用户被拒绝时将用户重定向到自定义页面。 非常感谢。

您可以创建一个名为 unathorized 的视图。在您的登录 class 中,只需重定向到该视图。你可以在 logon.cs

中使用类似的东西
if (AuthenticateUser())
        {
            if (CheckRulesOfBehavior())
            {
                AuthorizeUser();
                HttpContext.Response.Redirect("~/Work/Index");
            }
    else
        {
          HttpContext.Response.Redirect("~/Errors/Unauthorized");
        }

创建一个从 AuthorizeAttribute 派生的 class,将解决我的问题。

public class WindowsAuthorize : AuthorizeAttribute
    {
        public override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);

            if (filterContext.Result is HttpUnauthorizedResult)
            {
                filterContext.Result = new RedirectToRouteResult(
                    new RouteValueDictionary
                {
                    { "client", filterContext.RouteData.Values[ "client" ] },
                    { "controller", "Home" },
                    { "action", "Contact" },
                    { "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
                });
            }
        }
    }

然后像这样使用它

[WindowsAuthorize(Roles = "User1")]
[HttpGet]
public ActionResult Index(string runDate = "")
{ ... }