FormsAuthentication与Session超时时间不一的解决方法
因为FormsAuthentication 和 Session 的cookies不一样,造成了FormsAuthentication 还能进入,而 session已经超时的问题。
最好的办法就是当让FormsAuthentication 执行logout,然后再转到同一个页面。
可以定制一个module来解决此问题:
public class CheckSessionModule: IHttpModule { public void Init(HttpApplication app) { ctx.Application.AcquireRequestState += this.OnAcquireRequestState; } public void Dispose() {} public void OnAcquireRequestState(Object sender, EventArgs args) { if ((HttpContext.Current.User.Identity.IsAuthenticated == true) && (HttpContext.Current.Session.IsNewSession == true)) { FormsAuthentication.SignOut(); HttpContext.Current.Response.Redirect(HttpContext.Current.Request.Url.ToString(), false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } } }