您的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