问题标签 [flask-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
27 浏览

flask - 烧瓶未经授权的回调

每当我在为端点 /auth 使用 @login_requried 后成功登录时,到这里为止流程都很好。如果我再次在浏览器中点击 '/auth',它会将我带到@login_manager.unauthorized_handler下的函数。我能知道为什么吗?

我的应用程序在登录页面上有一个按钮,只有在用户未登录时才应显示此页面。该单个按钮再次被重定向到另一个 oauth 登录(如 google/webex)。我想用 login_required 装饰器保护所有其他页面。每当我在成功登录后重新访问 url 时,就会出现登录页面,这不应该是这种情况。

0 投票
0 回答
55 浏览

session - 烧瓶会话不保存价值/跨请求持续存在

当用户第一次添加到购物车时,我会创建一个新订单并将该订单的 order_id(整数)保存在会话中以将产品添加到订单中。然后当他们添加到购物车时,我可以查询订单并将产品添加到其中。

但是,在请求重定向到 store.products 页面后,会话不断重置为空字典。我不确定如何实现会话,以便它在所有请求中持续存在并使用它来跟踪 order_id。

我的订单表定义为:

0 投票
1 回答
1117 浏览

python - ImportError:无法从“flask_session”导入名称“Session”

提前感谢您在此问题上投入的时间

用例

  1. 我已经安装了 Flask-Sessionpip install Flask-Session
  2. 我已经在https://flasksession.readthedocs.io/en/latest/上复制/粘贴了教程

错误

0 投票
4 回答
6637 浏览

python - Python 会话 SAMESITE=None 未设置

我遇到了 chrome 和 SameSite 的问题。我在 shopify iframe 中提供网页,当使用烧瓶登录设置会话时,chrome 告诉我:

设置了与 URL 处的跨站点资源关联的 cookie,但未设置该 SameSite属性。SameSite=None 它已被阻止,因为 Chrome 现在仅在使用和设置时才提供带有跨站点请求的 cookie Secure

设置了安全,但我尝试以所有可能的方式设置 SameSite,但没有效果。

我试过设置

app.config['SESSION_COOKIE_SAMESITE'] = "无"

我试过了,改变了库的行为,我厌倦了在 set_cookie() 中设置属性,但似乎没有任何效果。我看到的响应没有 SameSite 属性。

(我有烧瓶、烧瓶登录、烧瓶安全和 werkzeug 的最新版本)

你能帮助我吗?

谢谢

0 投票
0 回答
158 浏览

vue.js - 使用 axios 提交 POST 请求时出错

如标题所述,情况如下:

烧瓶服务器

Vue.js 前端

从 POSTMAN 调用这两个 API,flask 可以成功存储它们的值,因为第二次调用返回所需的答案。相反,当在 localhost:8080 浏览器页面从 vuejs 调用它们时,我在主服务器上收到错误,因为它显示 KeyError 'email'。

我尝试了在网上找到的所有解决方案,但没有成功。我究竟做错了什么?

0 投票
0 回答
33 浏览

python - 从 flask.session 读取返回一个空列表

我的 Flask 应用程序具有以下路由,可在 WTForm 旁边呈现图像网格以供用户输入。我希望的行为是在提交表单但无效时保留当前的图像样本。我的想法是将来自最后一个 GET 请求的样本存储在 flask.session 代理中。但是,当从session空列表中读取样本时会返回。

我已filesystem在应用程序的配置中将会话类型设置为。我读过存储在 session 中的数据实际上是写入 cookie 的,因此需要是 JSON 可序列化的,但是由于我们正在处理字符串列表,所以这不是问题。

这是服务器的输出:

0 投票
1 回答
155 浏览

ajax - 烧瓶会话没有传递给不同的功能

我有两个功能:

AJAX 调用:

会话变量通过 Ajax 发送。提交表单后,当我尝试访问会话变量时,我收到此错误消息。

错误:

我在这个平台上遇到了许多类似的问题……没有一个适合这种情况。
我已经尝试过的:

  1. session.modified=会话后为真['final_box']=final_box
  2. app.secret_key 已经存在
  3. 等待所有挂起的请求在服务器端完成

任何指向或轻推解决方案都值得赞赏。

0 投票
0 回答
85 浏览

python - Flask-Login/Flask-Session - 来自外部站点的链接

在使用 Flask、Flask-Login 和 Flask-Session 时,我遇到了以下问题:

当单击外部站点(跨域)上的链接时,该链接指向受保护的路由@login_required,flask-logins _load_user-function 无法检索用户信息(因为跨域请求未发送 cookie) . (不使用装饰器,current_user.is_authenticated似乎是False。)

(来自flask_login.login_manager.py

如果使用了装饰器,请求将被重定向到/?next=/protectedView. 如果只是使用current_user.is_authenticated,就会有结果False

每次单击刷新时,会话 cookie 都会重新创建和覆盖。但是,如果我在 URL 栏中单击并按 Enter,则用户加载器能够访问 remember_cookie 并加载用户数据,而无需创建新会话。

当从另一个域中输入受保护的路由时,是否有任何简单方便的方法允许加载用户数据?

更新:我发现设置REMEMBER_COOKIE_SECURENone而不是Strict会导致烧瓶登录登录用户。该链接现在重定向到正确的页面。

0 投票
0 回答
285 浏览

docker - Flask 会话在与 redis 服务器端会话一起使用时丢弃数据

两种设置。两种不同的结果。

设置 1:Flask 应用程序在开发模式下运行,redis 在本地容器中运行。

会话数据在请求中持续存在。

设置 2:在容器中的 AWS EC2 实例上运行的 Flask 应用程序,在 docker-compose 环境中的容器中运行 redis,在 docker compose 环境中使用 nginx 容器。

某些会话数据无法在请求之间保留。

令人兴奋的是,如果我将会话存储在 cookie 上,系统会按预期工作,并且所有状态都存储在设置 2 中。

不确定以下任何一项:

  • 为什么某些会话项目持续存在而其他会话项目不存在。
  • 为什么这可以在本地重复而不是在 EC2 实例上工作。
  • 出了什么问题以及(希望)我如何修复或调试它。

更新:
服务器端会话的会话配置:

这是应用程序配置的一部分。除此之外,我设置了烧瓶会话

(模用于创建应用程序的样板代码。)删除调用Session(app)和配置修复会话不丢弃数据。我需要使用 redis,因为会话 cookie 不够大,无法存储一些会话。

0 投票
0 回答
48 浏览

python - 继续尝试请求之间的 API 密钥 [flask 和 flask_restful]

我目前遇到的当前问题是如何跟踪存储在 MySQL 数据库中的 API 密钥。我拥有的每个后端都存在于它自己的文件中。

SQL from sql.py, Sync fromsync.py等。而且我不太确定我应该如何跟踪 API 密钥。根据我的研究,它表明我需要使用一种叫做会话的东西。但我不确定如何让它工作。在查看了一些文档之后,似乎它需要将所有内容都放在一个文件中。但无论如何我都不会知道。由于一对一地按照网站的说明进行操作是行不通的,因此from flask.ext.session import session会出现错误:module flask.ext.session does not exist,或者类似于无法找到模块的内容。

而且我不想将我的所有类都保存在一个文件中,因为每个类至少有 50 行长,其中一个有超过 150 行。这就是让我首先将每个后端拆分为自己的文件的原因。

我也尝试过创建一个Host继承自我所有后端的类。和SQL.__init__(self, key)Sync.__init__(self, key)等等。我最初的理论是,在我的每个后端类的构造函数中,我都可以创建一个 variable self.key = key。但这也没有用。由于循环导入,如果我将所有后端类放到同一个文件中,就可以解决这个问题。这又不是我想要的。