首页 > 解决方案 > Flask - 如何在所有子域中访问 remember_me 令牌

问题描述

我正在尝试使用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之类的东西?

标签: flaskflask-login

解决方案


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

根据Flask-Login 的文档

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

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


推荐阅读