Asp.net mvc 3 ASP.NET MVC基本身份验证计数尝试?
VS 2010.NET Framework 4上的ASP.NET MVC 3: 我将web.config设置为“无”以进行身份验证。我有一些自定义属性和代码,可以实现基本身份验证(基于我在这里从专家那里找到的内容-谢谢)。尝试3次失败后,IIS将显示自己的“auth denied”消息。我正在尝试将计数更改为5次尝试,并显示我自己的错误页面。到目前为止我还不知道怎么做 auth类的摘录:Asp.net mvc 3 ASP.NET MVC基本身份验证计数尝试?,asp.net-mvc-3,authentication,.net-4.0,routes,Asp.net Mvc 3,Authentication,.net 4.0,Routes,VS 2010.NET Framework 4上的ASP.NET MVC 3: 我将web.config设置为“无”以进行身份验证。我有一些自定义属性和代码,可以实现基本身份验证(基于我在这里从专家那里找到的内容-谢谢)。尝试3次失败后,IIS将显示自己的“auth denied”消息。我正在尝试将计数更改为5次尝试,并显示我自己的错误页面。到目前为止我还不知道怎么做 auth类的摘录: CustomBasicAuthorizeAttribute: AuthorizeAttribute ...
CustomBasicAuthorizeAttribute: AuthorizeAttribute
...
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null) throw new ArgumentNullException("filterContext");
if (!Authenticate(filterContext.HttpContext))
{
filterContext.Result = new HttpCustomBasicUnauthorizedResult();
}
else
{
if (AuthorizeCore(filterContext.HttpContext))
{
HttpCachePolicyBase cachePolicy = filterContext.HttpContext.Response.Cache;
cachePolicy.SetProxyMaxAge(new TimeSpan(0));
cachePolicy.AddValidationCallback(CacheValidateHandler, null /* data */);
}
else
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "client", filterContext.RouteData.Values[ "client" ] },
{ "controller", "Account" },
{ "action", "Login" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
} );
}
}
}
谢谢。这不是IIS显示的,您的浏览器是,因此无法更改。加载fiddler,您应该能够确认第四个请求从未从您的浏览器发出,第三个请求的IIS响应不是您看到的页面。您只显示了部分代码,这部分与验证尝试失败的计数无关。例如,您还没有展示Authenticate和AuthorizeCore方法的外观。我还没有任何计数代码,因为我认为这是应该进行计数的地方,但我不确定。我在这段代码中加入了断点,并在运行时探索了调试器中的属性/事件/方法,但没有显示任何内容。。。如果这是Forms auth,那么我可以知道用户最终被拒绝的时间,并显示特定页面。我在想,使用Basic,我可以在第三次尝试时“接受”拒绝的凭据,并将它们重定向到未经授权的用户页面,清除登录历史记录,以便用户可以稍后返回并再次尝试身份验证。