从webapp2 documentation
我获得了以下代码(不确定是否正确):
import webapp2
from webapp2_extras import sessions
class BaseHandler(webapp2.RequestHandler):
def dispatch(self):
self.session_store = sessions.get_store(request=self.request)
try:
webapp2.RequestHandler.dispatch(self)
finally:
self.session_store.save_sessions(self.response)
@webapp2.cached_property
def session(self):
return self.session_store.get_session()
class Login(BaseHandler):
def get(self):
self.session['foo'] = 'bar'
foo = self.session.get('foo')
我只是在用户登录后尝试创建一个基本的登录会话。但是我已经研究了很长一段时间没有运气了。
我的想法是:
self.session_store = sessions.get_store(request=self.request)
获取会话存储,我将存储用户所需的数据
try:
webapp2.RequestHandler.dispatch(self)
finally:
self.session_store.save_sessions(self.response)
更新会话商店?在这里不完全确定。
@webapp2.cached_property
def session(self):
return self.session_store.get_session()
返回会话以便可以使用内部数据
我不知道的事情:
request=self.request
函数中的get_store()
是什么?商店不能成为存储会话的服务器数据库中的一般商店吗?try,finally:
位是什么?非常困惑。如果有很多问题,我道歉,但我很新,很遗憾。我看了一些PHP会话教程,但没有取得很大进展。
提前感谢您的任何答案。
答案 0 :(得分:1)
它只传递self.request
的当前值作为get_store的“request”关键字参数。我不知道那个问题的第二部分意味着什么。
这只是确保即使在try块中发生异常(即在处理程序代码中),也会始终执行finally块,因此将始终保存会话存储。
您不应该对会话ID做任何事情;它们完全不透明。它们只与用户在cookie中存储的ID相关。但与用户的关系却是另一回事;正如我在上一个问题中所说,你会在登录时将会话记录的数据库ID存储在会话中。
问题1和2都只是标准的Python;你可能会从语言教程中受益。