我有一个使用GitHub的OAuth API的Web应用程序,以便该应用程序的用户与GitHub进行交互。但是,我看到有关会话cookie的一些非常奇怪的行为。

问题描述 投票:0回答:0
我正在使用github oauth文档中描述的Web应用程序流,并成功地通过访问令牌回电,我将其存储在数据库中,也将其存储在会话[1]中:

class User(peewee.Model): login = peewee.TextField(unique=False) token = peewee.TextField()

我的路线
@app.route('/callback') def finishlogin(): # I've verified that `token` and `login` are both valid at this point user = User.create(login=login, token=token) session['token'] = token return redirect(url_for('home'))
如下:

home
到目前为止,一切都很好。但是,我正在体验用户登录,刷新页面并发现他们突然作为其他人登录的实例。将请求记录到该应用,因此在设置不同客户端和请求之间的会话时似乎存在一些“泄漏”。

我不确定问题是什么。我的数据库如

@app.route('/') def home(): if 'token' in session: user = User.get(token=session.get('token')) return 'Your login is {}'.format(user.login) else: # ...

文档所述存储在烧瓶
session.get('token')
对象上,并设置了

home()

g

挂钩,以打开和关闭数据库连接,以及我所读过的所有文档和示例代码(而且我已经读了很多!),我似乎正在正确使用会话对象。我已经为会话商店设置了一个工作
peewee
。 我想知道这可能是Heroku和他们的路线网的情况吗?但是,一个用户如何突然发送另一个用户的会话?

任何提示或建议都会不胜感激 - 我已经盯着这个问题了很长时间,并处于我的智慧。

[1]我知道直接存储令牌是一个不好的设计选择。该应用程序是非公共的,这将是解决的,但是现在我想描述它的存在,即使它不是理想的。
    
提出我自己的问题以备将来参考。

这似乎是由烧瓶的默认会话cookie行为引起的,即使对于静态资产,也要发送带有单个请求的标题。因此,我们当地的鱿鱼代理很乐意缓存这些请求,并为每个用户重新发出

before_request

标题。 整个应用程序的标题似乎解决了问题。


整个应用程序的设置缓存控制标头似乎解决了问题。
这也适用于Micropie。
    

python session heroku flask peewee
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.