Ho un'applicazione MVC4 con Windows Authentication
. L'utente può digitare l'url di una qualsiasi delle 10 viste per caricare l'applicazione. Nessuna home page specificaInizio sessione e filtro azione per sessione Gestione timeout
Devo reindirizzare a una vista di timeout della sessione se l'utente era inattivo per più di un minuto. Ho mantenuto il valore di timeout della sessione nel file di configurazione come un minuto. E ho creato un action filter
per controllare un particolare valore di sessione. Questo particolare valore di sessione è impostato nello Session_Start
dello Global.asax
.
Tuttavia, quando il periodo di timeout è scaduto, la richiesta tocca nuovamente lo Session_Start
e sta assegnando il valore. Quindi il mio filtro di azione non sta reindirizzando alla vista di errore. Quali sono le possibili soluzioni per superare questo?
Web.Config
<system.web>
<!--Impersonate-->
<identity impersonate="true"/>
<!--Session Mode and Timeout-->
<sessionState mode="InProc" timeout="1" />
<authentication mode="Windows">
</authentication>
<authorization>
<allow users="?" />
</authorization>
</system.web>
Operazione filtro
[AttributeUsage(AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class SessionCheckAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(System.Web.Mvc.ActionExecutingContext filterContext)
{
string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
HttpSessionStateBase session = filterContext.HttpContext.Session;
var activeSession = session["IsActiveSession"];
if (activeSession == null)
{
//Redirect
var url = new UrlHelper(filterContext.RequestContext);
var loginUrl = url.Content("~/Error/SessionTimeout");
filterContext.HttpContext.Response.Redirect(loginUrl, true);
}
}
}
global.asax
protected void Session_Start(object sender, EventArgs e)
{
Session["IsActiveSession"] = DateTime.Now;
}
Riferimento: http://stackoverflow.com/questions/199099/how-to-manage-a-redirect-request-after-a-jquery-ajax-call – Lijo
E http://stackoverflow.com/questions/ 16259230/Globally-filter-ajax-success-handlers e [408 Error Code] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) – Lijo