Model view controller MVC5Windows身份验证重定向

Model view controller MVC5Windows身份验证重定向,model-view-controller,Model View Controller,我创建了一个MVC5项目,并使用Windows身份验证。 我的问题是,每当用户的操作被操作属性[Authorize(Roles=“roelab”)]拒绝时,浏览器就会弹出一个带有用户名/passwor的登录警报。 现在我不希望出现这个弹出窗口,我只希望如果用户被拒绝,那么将用户重定向到自定义页面。 非常感谢。您可以创建一个名为unathorized的视图。在登录类中,只需重定向到该视图。您可以在logon.cs中使用类似的内容 if (AuthenticateUser()) {

我创建了一个MVC5项目,并使用Windows身份验证。 我的问题是,每当用户的操作被操作属性[Authorize(Roles=“roelab”)]拒绝时,浏览器就会弹出一个带有用户名/passwor的登录警报。 现在我不希望出现这个弹出窗口,我只希望如果用户被拒绝,那么将用户重定向到自定义页面。
非常感谢。

您可以创建一个名为unathorized的视图。在登录类中,只需重定向到该视图。您可以在logon.cs中使用类似的内容

if (AuthenticateUser())
        {
            if (CheckRulesOfBehavior())
            {
                AuthorizeUser();
                HttpContext.Response.Redirect("~/Work/Index");
            }
    else
        {
          HttpContext.Response.Redirect("~/Errors/Unauthorized");
        }

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

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 = "")
{ ... }

您好,windows身份验证中没有登录功能。还是谢谢你。我通过覆盖默认的Authorize属性找到了解决方案。见下文。