Docker pgadmin中出现CSRF令牌丢失错误

x7rlezfr  于 2022-12-03  发布在  Docker
关注(0)|答案(5)|浏览(199)

我尝试使用pgpgadmin创建一个docker-compose堆栈,如下所示:

version: '3.1'
services:
  pg-admin:
    image: dpage/pgadmin4
    volumes:
        - /Users/pkaramol/Desktop/backup.tar:/pgadmin4/dvdrental.tar
    ports:
      - "8181:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: user@domain.com
      PGADMIN_DEFAULT_PASSWORD: 1234
    depends_on:
    - pg
  pg:
    image: postgres:12
    volumes:
      - ./pg-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    restart: always

pgadmin会将错误注销,如下所示:

pg-admin_1  | Traceback (most recent call last):
pg-admin_1  |   File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1811, in full_dispatch_request
pg-admin_1  |     rv = self.preprocess_request()
pg-admin_1  |   File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 2087, in preprocess_request
pg-admin_1  |     rv = func()
pg-admin_1  |   File "/usr/local/lib/python3.8/site-packages/flask_wtf/csrf.py", line 224, in csrf_protect
pg-admin_1  |     self.protect()
pg-admin_1  |   File "/usr/local/lib/python3.8/site-packages/flask_wtf/csrf.py", line 259, in protect
pg-admin_1  |     self._error_response(e.args[0])
pg-admin_1  |   File "/usr/local/lib/python3.8/site-packages/flask_wtf/csrf.py", line 302, in _error_response
pg-admin_1  |     raise CSRFError(reason)
pg-admin_1  | flask_wtf.csrf.CSRFError: 400 Bad Request: The CSRF session token is missing.

有什么建议吗?

qf9go6mv

qf9go6mv1#

确保在启动容器之前关闭连接到pgAdmin的选项卡。

x33g5p2x

x33g5p2x2#

也许你在同一台主机上运行了多个pgAdmin示例?至少对我们来说这是个问题。关闭其中一个就解决了这个问题。

7gcisfzg

7gcisfzg3#

对我来说,只有清除饼干解决了这个问题。

dffbzjpn

dffbzjpn4#

对我来说,有三个问题,我不知道哪一个解决了它:

  • 已禁用cloudflare缓存,然后清除该高速缓存
  • 我使用的是非标准端口,8082而不是5050
  • 我删除了环境变量PGADMIN_LISTEN_PORT: 8082

注意:我仍在使用端口8082,可以成功登录。

zujrkrfu

zujrkrfu5#

我在Azure Conatiner应用程序和容器示例中偶然发现了这一点。每当PGAdmin位于负载平衡器或网关后面时,对我有效的方法是简单地禁用作为.env变量的增强型Cookie保护标志。

PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION="False"

希望这能帮助到一些人。

相关问题