【问题标题】:Flask - How to access remember_me token in all subdomainsFlask - 如何在所有子域中访问 remember_me 令牌
【发布时间】:2019-04-23 20:33:22
【问题描述】:

我正在尝试使用Flask 创建一个具有 9 个以上控制器的应用程序,其中一些位于不同的子域中。

我正在使用 Flask_Login 来允许用户登录,用户控制器存在于一个单独的子域中,如果我访问该子域会出现问题,在我的控制台内它会显示重定向以首先登录用户访问该子域,在 cookie 中我看不到 remember_me 令牌。

以下是扩展的配置:

SERVER_NAME = 'localhost:5000'

# Login configurations
REMEMBER_COOKIE_DURATION = timedelta(seconds=7*24*60*60)
REMEMBER_COOKIE_NAME = 'myapp.remember'
REMEMBER_COOKIE_SECURE = True
REMEMBER_COOKIE_HTTPONLY = True
REMEMBER_COOKIE_REFRESH_EACH_REQUEST = True
REMEMBER_COOKIE_DOMAIN = '.localhost:5000'

from .controllers.client import client_route

app.register_blueprint(client_route, subdomain='client')

cookie 中的域是 localhost,我怎样才能将其更改为 .localhost 之类的东西??

【问题讨论】:

  • 请解释一下“访问控制台内的子域”是什么意思?
  • @DarkSuniuM,感谢您的关注 :),我的意思是在 python 解释器中,如果我在授权后访问 client.localhost:5000,它会显示 302 重定向代码!其实我已经登录了!!
  • 你能得到主域(localhost:5000)上的cookie吗?
  • @DarkSuniuM,cookie 只显示本地主机!!
  • 所以它也不能在主域上运行?

标签: flask flask-login


【解决方案1】:

您需要在配置中将REMEMBER_COOKIE_SECURE 设置为False

根据Flask-Login's documentation

将“记住我”cookie 的范围限制为安全通道 (通常是 HTTPS)。

它只在应用程序的 HTTPS 版本上设置 cookie

【讨论】:

  • 我已经更改了值,使用 CSRFToken 发送的 post 请求,但是响应显示不同的错误,现在它显示 The CSRF session token is missing,即使我发送了带有请求的 csrf_token!!
  • 嗯,这是另一个似乎与 Flask-Login 无关的问题
  • 尝试设置为None
猜你喜欢
  • 2020-02-04
  • 2021-02-16
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 2013-04-12
  • 2021-04-16
相关资源
最近更新 更多