您的Add
Action是否有任何非Ajax使用者?如果没有,我建议从操作中删除[Authorize]
属性,这将消除超时重定向问题。 (如果你的整个控制器使用[Authorize]
进行修饰,那么你需要删除控制器级别的属性并修饰所有其他动作。令人讨厌的是,我知道)。
为了提高安全性,您可以这样做,以防止非Ajax调用调用您的Add
操作。
public ActionResult Add()
{
if (Request.IsAjaxRequest())
return View("Error");
return View();
}
如果,另一方面,你Add
动作需要支持Ajax的和正常呼叫,可以解决这一问题的方法之一是创建一个从继承并重写AuthorizeAttribute
新属性类。退房源指导:http://aspnet.codeplex.com/SourceControl/changeset/view/23011#266447
您应该能够通过重写AuthorizeCore
方法做的伎俩,像这样
public class AjaxAuthorizeAttribute: AuthorizeAttribute
{
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
if (httpContext.Request.IsAjaxRequest())
return true;
return base.AuthorizeCore(httpContext);
}
}
现在您可以在控制器和/或动作上使用[AjaxAuthorize]
。
要清楚的是,您在这里所做的是在用户通过Ajax发起呼叫时给予用户超时延长。一旦他们刷新页面,或离开,他们会被提示重新登录,正常情况下。
希望有所帮助。如果遇到任何问题,请告知我。
我不能这样做。我们的安全政策规定超时时间不超过30分钟。 – 2010-07-14 02:08:00