【问题标题】:Flask Blueprint Putting something on session烧瓶蓝图在会话中放置一些东西
【发布时间】:2018-03-29 05:18:03
【问题描述】:

我试图把

session['logged_in'] = True

在会话中,但在另一个蓝图中它不会持续存在...这是为什么呢?

有没有更好的方法来保持会话中的内容?

扩展:

我有一个蓝图,提供登录表单。完成并提交后,它将像上面一样设置会话密钥。然后它通过

重定向

返回重定向(url_for('admin.index'))

到管理页面,如果我通过

调用密钥

session.get('logged_in')

我得到“无”而不是真或假。

【问题讨论】:

  • 我想我已经为你清理了一些东西。如果不能回答您的问题,请随时发表评论。
  • 问题出在 url_prefix

标签: python flask


【解决方案1】:

我想我现在明白你的困惑了~

您的烧瓶会话不会在服务器上存储任何内容。 'session' dict 由来自客户端请求的 cookie 填充。

再次。那就是:

客户端向服务器发出登录请求,并得到一个 [登录成功] 响应以及一个包含 !!!sessionINFO!!! 的 [cookies]您认为存储在服务器端。

下一次,你必须再次将整个cookies发送到服务器,那么你在服务器中的会话可能有数据。

浏览器会为您执行此操作。 如果您使用本地客户端,请说 python 请求库。然后确保您使用会话发出请求(对于 requests-lib,它是 requests.Session())

--------------------老---------------------------- ---------

虽然不是专家,但你描述的情况不应该发生。

如果您浏览过 Beqa 提到的文档,则会话是使用秘密加密的 cookie 数据。

刚刚设置

app.secret = '........'

并将会话用作字典。

仅供参考,

client request---->server (加密 your_data 'logged_in' and client_relating_data 'maybe: ip, host or etc.',并将加密后的信息放入cookies 'session=....') ---- --> 客户端(通过 cookie 获取响应)

再次客户端请求 -----> 服务器(使用您的密码解密 cookie 'session=...'),找到 'logged_in' 数据并知道您已登录。)

cookie 如下所示。

所以,我不确定您在使用 session 时到底有什么问题,并在此处提供一些基本信息。只是希望它有助于以防万一。

【讨论】:

  • 我已经扩展了这个问题以便更好地理解。
  • 谢谢,但我很困惑。在普通烧瓶中,我可以在会话中使用存储的对象来执行多条路线的操作,但在蓝图中,我没有得到这个.....我可以存储任何东西:session['Location'] = "Tokyo" .. .. 并且可以检查是否同一请求在另一个请求中......
  • 你的案例不够详细。我猜烧瓶,您的几个请求“偶然”包含所需的 cookie,而对于蓝图测试,您以某种方式请求没有先前响应给您的 cookie。如果您想知道您的会话数据是否已存储,只需检查响应烧瓶中的 cookie 发送回给您 session=xxx 应该存在的位置。
猜你喜欢
  • 2012-06-16
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 2018-08-18
  • 1970-01-01
相关资源
最近更新 更多