【发布时间】:2017-06-10 20:20:20
【问题描述】:
我正在尝试使用webapp2 sessions 和building a response 的文档在Google App Engine 中将cookie 设置为never expire(即使在浏览器关闭后)。我试过了:
代码 sn-p 1:
from webapp2
from webapp2_extras import sessions
class MainHandler(webapp2.RequestHandler):
def never_expire_session(self):
sessions.get_session(name='my_session', max_age=2147483647)
@login_required
def get(self):
....
html_template = JINJA_ENVIRONMENT.get_template('index.html').render(myapp)
self.response.out.write(html_template)
或
代码 sn-p 2:
class MainHandler(webapp2.RequestHandler):
def never_expire_session(self):
return self.response.set_cookie('my_session', max_age=2147483647)
@login_required
def get(self):
....
html_template = JINJA_ENVIRONMENT.get_template('index.html').render(myapp)
self.never_expire_session()
self.response.out.write(html_template)
代码片段 2 的响应为 NoneNone。 (不确定第一个代码sn-p的输出。)
我也试过答案here,建议配置参数:
config = {}
config['webapp2_extras.sessions'] = {'session_max_age': 2147483647}
....
....
app = webapp2.WSGIApplication([
....
], debug=True, config=config)
我已经清除了我的 cookie,重新启动了我的浏览器,并检查了控制台,cookie 值显示为随机生成的数字和字母序列,并且 cookie 的到期时间设置为从 datetime.now 开始的一年。我试过的都没有用。
如何正确设置会话 cookie,使其永不过期,即使在浏览器退出时也是如此?
【问题讨论】:
-
前两个 sn-ps 应该做什么?什么叫
never_expire_session?为什么要在 cookie 和会话之间切换? -
我相信我应该根据我迄今为止阅读的文档和 Stackoverflow 问题使用 cookie。但是在这个post 中,@jwueller 指出,“会话使用 cookie,当浏览器关闭时它们会被删除,除非它们具有特定的生命周期。”据我了解,如果我延长会话最大年龄,它会做与使用 cookie 相同的事情吗?所以代码片段 1 和 2 本质上应该做同样的事情:延长会话最大年龄。我只是不知道该使用哪个。
-
更新代码以包含我调用
never_expire_session的位置(在代码 sn-p 2 中)
标签: python google-app-engine session-cookies