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();

        }

    }

}

 

你可能感兴趣的:(Authentication)