【问题标题】:How to stop regenerating cherrpy.session.id for each call如何停止为每个呼叫重新生成 cherrpy.session.id
【发布时间】:2014-02-01 18:40:13
【问题描述】:

伙计们,

我正在运行 CherryPy(版本 3.2.4)服务器的一个实例,并且对于同一端点,我正在打印cherrypy.request.cookie 和cherrypy.session.id 的值。对于 4 个后续调用:

 session_id=ed46544a403a633bc632a9d193a722a6e0cc9088 b0bb3aec2a5858cbd69e0d3933d2852e753725cd
 session_id=b0bb3aec2a5858cbd69e0d3933d2852e753725cd 069564740a1f38fdc8f4721ee759c3ff1f2a12d2
 session_id=069564740a1f38fdc8f4721ee759c3ff1f2a12d2 87cd7af0bd36ec9d9d4b6e6d74f28fb138ddacfc
 session_id=87cd7af0bd36ec9d9d4b6e6d74f28fb138ddacfc 8cbabaa63f09ce601611c4e7d7f9b28522f4d76f

如果您看到每个后续调用,cherrypy.session.id 将被重新生成并发送到客户端,它作为cherrypy.request.cookie 出现在下一个请求中。这意味着,每次,我都会生成一个新的会话 ID?我可以使用什么选项来阻止它?

对于同一个用户,只要他不清除浏览器缓存,我想要相同的 session_id?

请帮忙。

编辑:这就是我的配置:

cherrypy.config.update({                 
    'tools.sessions.on':            True,
    'tools.sessions.timeout':       120  
})                                       

【问题讨论】:

  • 请显示您的配置和会话管理文件。另外,什么版本的cherrypy?
  • @AndrewKloos - 查看我的编辑

标签: python session-cookies cherrypy


【解决方案1】:

试试……

    cherrypy.config.update({                 
    'tools.sessions.on':            True,
    'tools.sessions.timeout':       120,
    'tools.sessions.storage_type' : "file",  #or RAM
    'tools.sessions.storage_path' : "/home/site/sessions"
})     

http://cherrypy.readthedocs.org/en/latest/refman/lib/sessions.html

希望这会有所帮助!

【讨论】:

  • 我为 storage_type 尝试了 RAM 和文件,但 CherryPy 每次都会重新生成 session.id。
  • 您是否在任何地方使用cherrypy.session.regenerate()?您是否使用 Chrome 和 localhost 而不是 IP? stackoverflow.com/questions/13037429/…
  • server.socket_host = '0.0.0.0' 和 server.socket_port=8099 & 我不在任何地方使用 regenerate()。我已多次阅读该文档,但仍不确定该问题。
【解决方案2】:

cherrypy.session['any_string'] = 'some_string' 意味着在会话中保存任何数据都可以解决问题。

【讨论】:

  • 有趣!编码愉快!
  • 是的,空会话一定是原因。请参阅 CherryPy 的会话固定保护。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 2023-01-29
  • 2017-08-25
  • 2013-12-27
  • 1970-01-01
  • 2016-04-08
相关资源
最近更新 更多