Est-ce que votre Action Add
a des consommateurs non-Ajax? Si ce n'est pas le cas, je suggérerais de supprimer l'attribut [Authorize]
de l'action, ce qui supprimerait le problème de timeout-redirect. (Si votre contrôleur entier est décoré avec [Authorize]
, vous devez supprimer l'attribut de niveau contrôleur et orner toutes vos autres actions. Pour plus de sécurité, vous pouvez faire quelque chose comme ceci pour empêcher les appels non-Ajax d'appeler votre action Add
.
public ActionResult Add()
{
if (Request.IsAjaxRequest())
return View("Error");
return View();
}
Si, d'autre part, votre Add
l'action doit soutenir Ajax et appels normaux, d'une façon que vous pouvez résoudre ce problème est de créer une nouvelle classe d'attributs qui hérite de et remplace AuthorizeAttribute
. Consultez la source d'orientation: http://aspnet.codeplex.com/SourceControl/changeset/view/23011#266447
Vous devriez être en mesure de faire l'affaire en redéfinissant la méthode AuthorizeCore
, comme si
public class AjaxAuthorizeAttribute: AuthorizeAttribute
{
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
if (httpContext.Request.IsAjaxRequest())
return true;
return base.AuthorizeCore(httpContext);
}
}
vous pouvez utiliser [AjaxAuthorize]
sur votre contrôleur et/ou une action.
Pour être clair, ce que vous faites ici est de donner à l'utilisateur une extension de son délai d'attente s'il lance un appel via Ajax. Une fois qu'ils ont actualisé la page ou quitté le site, ils sont invités à se reconnecter, comme d'habitude.
Espérons que ça aide. Faites-moi savoir si vous rencontrez des problèmes.
Je ne suis pas autorisé à le faire. Notre politique de sécurité stipule 30 minutes ou moins pour les délais d'attente. –