怎样做到session到期时自动清除cookies

我在config中设置session的timeout,但多次测试后发现不准确。但session确实会过期,那我该怎么让session过期时顺带把指定的cookies清空呢

作者: max_single   发布时间: 2011-06-16

session过期,跳到错误页面的同时清空cookies

作者: naonaoye   发布时间: 2011-06-16

引用 1 楼 naonaoye 的回复:

session过期,跳到错误页面的同时清空cookies

请问这一步怎么做

作者: max_single   发布时间: 2011-06-16

做一个页面基类,在基类里做判断,如果session["xxx"]==null就执行清空cookies

然后所有页面都继承这个基类

  public class BasePage : System.Web.UI.Page
  {
  private void BasePage_Load(object sender, EventArgs e)
  {
  这里做判断
  }
  }


其它页面
public partial class _Default : BasePage 
{
}

作者: liuchaolin   发布时间: 2011-06-16

能判断session过期 那么就设置Cookie的过期时间

if(Session[""]==null)
{
 //设置cookie过期时间
 //name.Expires = DateTime.Now.AddDays(-1);

}

作者: wxr0323   发布时间: 2011-06-16

引用 4 楼 wxr0323 的回复:

能判断session过期 那么就设置Cookie的过期时间

if(Session[""]==null)
{
//设置cookie过期时间
//name.Expires = DateTime.Now.AddDays(-1);

}

现在是我的cookies是用JQ生成的,只能用JQ去删除,我试了用你的方法删不了。如何判断session为空时调用JS的cookies设置呢

作者: max_single   发布时间: 2011-06-16

楼主你先说说为何你要这样做吧?你如果可以说出为何要这样做,也许别人会给你一个更好的方案,我可以告诉你,你的那个想法是不行的。

作者: chen_ya_ping   发布时间: 2011-06-16

你的那种做法的是在一种理想的情况下啊,但是理想的状态下,有多少是可能发生的呢?

作者: chen_ya_ping   发布时间: 2011-06-16

session在服务器端,cookie在客户端,http是无状态的协议。请问你如何做到,要是可以做到,也是在理想的情况下。

作者: chen_ya_ping   发布时间: 2011-06-16

引用 8 楼 chen_ya_ping 的回复:

session在服务器端,cookie在客户端,http是无状态的协议。请问你如何做到,要是可以做到,也是在理想的情况下。

这位科迷,我想session到期时清除cookies,因为有些状态值是存在cookies中。如果长时间(直到session到期)不在页面上执行动作那么就会清除cookies,这是我的项目需求,请指教。

作者: max_single   发布时间: 2011-06-16

Global文件里有个Session_End方法,在这里写上清楚cookie的逻辑

作者: shaohaiou   发布时间: 2011-06-16

引用 10 楼 shaohaiou 的回复:

Global文件里有个Session_End方法,在这里写上清楚cookie的逻辑

答:写了,不行。

作者: max_single   发布时间: 2011-06-16

引用 10 楼 shaohaiou 的回复:

Global文件里有个Session_End方法,在这里写上清楚cookie的逻辑

+1

作者: chai1338   发布时间: 2011-06-16

config中有<sessionState timeout="30" cookieName="ASPNETSessionId"></sessionState>
修改timeout,然后在Global文件里有个Session_End方法,接下来的事情你应该知道的。

作者: xq870723   发布时间: 2011-06-16



cookies的过期时间保持和session的过期一样就可以了.

作者: kkbac   发布时间: 2011-06-16

cookies周期设置小一点呢

作者: zds835   发布时间: 2011-06-16

引用 11 楼 max_single 的回复:
引用 10 楼 shaohaiou 的回复:

Global文件里有个Session_End方法,在这里写上清楚cookie的逻辑

答:写了,不行。



这个事件只有在seesion失效时才会触发,并且是有前提要求的,网站的用户配置文件必须先配置好web.config必须这样配置

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="UseCookies" timeout="60"/>

//就是这个mode="InProc"模式,不能是其它,否则无法触发这个事件

作者: likevs   发布时间: 2011-06-16