【发布时间】:2019-02-25 09:06:20
【问题描述】:
在我的 Flask API 中,我试图让会话保持永久状态,以便即使在浏览器关闭后它仍然存在。我的前端是用 React 编写的,并使用 Fetch API 来发出请求。但是,在测试了我到目前为止所拥有的东西之后,它似乎不起作用。我的代码(省略了一些不相关的数据库内容):
@bp.route('/login', methods=('POST',))
def login():
...
error=None
res = {}
db = get_db()
cursor = db.cursor(dictionary=True)
...
user = cursor.fetchone()
...
if error is None:
session.clear()
session.permanent = True
session['userID'] = user['id']
current_app.logger.debug(session['userID'])
res['actionSuccess']= True
else:
res['actionSuccess'] = False
res['error'] = error
return jsonify(res)
到目前为止,我可以看出会话确实在存储用户 ID 值。然后我写了另一个路由来告诉我一个 userID 值是否存储在 session 中,如下所示:
@bp.route('/init', methods=('GET',))
def init():
userID = session.get('userID')
if userID is None:
res = {"signedIn": False}
else:
res = {"signedIn": True, "username": userID}
return jsonify(res)
但是,每次我调用“/init”时,即使我以前登录过,它也会返回 False。我不知道为什么会话在这里不是永久的。是因为我在我的机器上本地运行客户端吗?我是否需要在 Chrome 浏览器的某处允许 cookie?我使用 Chrome 查看为客户端存储的 cookie,并且没有存储“会话”。我是否需要在前端存储一些额外的东西来存储 cookie/会话,或者它们是否会自动存储?我是否误解了 Flask 会话的用法?
【问题讨论】:
标签: cookies flask session-cookies