gpt4 book ai didi

python - 将 session 与 WebApp2 Python 结合使用

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:54 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com