浏览 5273 次
锁定老帖子 主题:django session的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-08
请教,在django中,如何实现根据用户的不同选择(保留/或者不保留)来保存session? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-12-09
你的要求最好用cookie来实现
不过基于django的开放性,也不是不可能实现,只是要改动的地方多些,下面提几个要点 1. django中的request.session是通过django.contrib.sessions.SessionMiddleware来完成的,request.session实际上并不是django.contrib.models.Session实例,而是settings.SESSION_ENGINE中指定模块的SessionStore实例,默认 的,就是django.contrib.sessions.backends.db.SessionStore 2. 将你的用户会话超时设置放在某个地方,比方说利用django user的profile机制存放session_timeout设置 3. 你要改动如下代码 ①django.contrib.session.middleware中的将session写到cookie中的过程,你需要修改expires 参数到time.time+user.get_profile().session_timeout ②修改django.contrib.sessions.backends.db.SessionStore中的save方法 这里expire_date = datetime.datetime.now() + datetime.timedelta(seconds=settings.SESSION_COOKIE_AGE) 中的seconds=settings.SESSION_COOKIE_AGE 要改成user.get_profile().session_timeout 修改这个方法的原因是django用expire_date__gt这个条件查找指定sesion_key的session ①中可以从request.user中取得user,但②中的user,你要想个办法传入或直接将session_timeout传到SessionStore实现上. (setattr(request.session,"sessin_timeout",user.get_profile().session_timeout)当获取用户时,你也要考虑用户没有登录的情况. 这样,就转用django的原设定. 代码其实不多,但可能要考虑仔细些 随手写的,可能有遗漏的地方,欢迎补充 |
|
返回顶楼 | |