代码改变世界

FormsAuthentication 和 Session 超时时间不一的问题

2009-06-04 15:20  午夜瞎想  阅读(810)  评论(0编辑  收藏  举报

因为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();
        }
    }
}
 
zt:

FormsAuthentication and Session Timeouts