我正在使用:
from flask import session
@app.route('/')
def main_page():
if session.get('key'):
print ("session exist" + session.get('key'))
else:
print ("could not find session")
session['key'] = '34544646###########'
return render_template('index.html')
我没有安装 Flask-Session 扩展,但这仍然可以正常工作。我试图了解为什么以及何时该扩展对我来说很重要。据我所知,默认 session 对我来说效果很好。
最佳答案
区别在于 session 数据的存储位置。
Flask 的 session 是客户端 session 。您写入 session 的任何数据都会写入 cookie 并发送到客户端进行存储。客户端将在每次请求时将 cookie 发送回服务器,这就是您在 session 中写入的数据在后续请求中保持可用的方式。存储在 cookie 中的数据经过加密签名,以防止任何篡改。您的配置中的 SECRET_KEY
设置用于生成签名,因此只要您的 key 保密,客户端 session 中的数据就是安全的。请注意,此上下文中的 secure 意味着 session 中的数据不能被潜在的攻击者修改。任何知道如何查看的人仍然可以看到这些数据,因此您永远不应该在客户端 session 中写入敏感信息。
Flask-Session 和 Flask-KVSession 是 Flask 的两个扩展,用于实现 服务器端 session 。从应用程序的角度来看,这些 session 的工作方式与 Flask native session 完全相同,但它们将数据存储在服务器中。数据永远不会发送到客户端,因此安全性有所提高。客户端仍然会收到一个签名的 cookie,但 cookie 中唯一的数据是一个 session ID,它引用了存储数据的服务器中的文件或数据库索引。
关于python - Flask-Session 扩展与默认 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32084646/