python - 将 session 与 WebApp2 Python 结合使用

标签 python session webapp2

webapp2文档我得到了以下代码(不确定它是否正确):

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')

我只是想在用户登录后创建一个基本的登录 session 。但我已经研究这个问题很长一段时间了,但没有成功。

我认为发生了什么:

    self.session_store = sessions.get_store(request=self.request)

获取一个 session 存储,我将在其中存储用户所需的数据

    try:
        webapp2.RequestHandler.dispatch(self)
    finally:
        self.session_store.save_sessions(self.response)

更新 session 存储?这里不完全确定。

@webapp2.cached_property
def session(self):
    return self.session_store.get_session()

返回 session 以便可以使用其中的数据

我不知道的事情:

  • get_store() 函数中的 request=self.request 是什么?存储不能是服务器数据库中存储 session 的通用存储吗?
  • try,finally: 位的用途是什么。那里非常困惑。
  • 我们是否需要显式地担心 session ID?我将如何使用 session ID 映射到数据库中的用户信息。每个用户都会有一个对应的唯一 session ID。

如果有很多问题,我很抱歉,但我很新,很迷茫。我看了一些 PHP session 教程,但没有取得多大进展。

感谢您的提前答复。

最佳答案

  1. 这只是将 self.request 的当前值作为 get_store 的“request”关键字参数传递。我不知道这个问题的第二部分是什么意思。

  2. 这只是确保即使在 try block 内(即在处理程序代码内)发生异常,finally block 也将始终被执行,因此 session 存储将始终被保存。

  3. 您不应该与 session ID 有任何关系;它们是完全不透明的。它们仅与用户存储在 cookie 中的 ID 相关。但与用户的关系却是相反的;正如我在上一个问题中所说,当用户登录时,您将在 session 中存储用户记录的数据库 ID。

问题 1 和问题 2 实际上只是标准的 Python;您可能会从语言教程中受益。

关于python - 将 session 与 WebApp2 Python 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33921819/

相关文章:

如果 streams=True,Python Requests 模块不处理超时?

web-services - 关于 Rest "Communicate statelessly"原理

session - StackExchange.Redis.RedisServerException : ERR unknown command 'EVAL' 异常

python - 在 google app engine 上进行 url 映射之前运行代码

python - 如何在 python 和 webapp2 中发出 POST 请求

python - 如果未定义参数,则设置默认变量值

python - model.add(Dense, (133)) 的 Keras 语法错误

python - pandas DataFrame 旋转问题

PHP session 在 SSL/非 SSL 页面之间被删除,即使在单独的选项卡中也是如此

python - 分组时应用自定义函数返回 NaN