单个烧瓶应用程序中多个子域的单独登录会话
Separate login sessions for multiple subdomains in a single flask app
我有一个处理多个子域的烧瓶应用程序
假设我们有
www.domain.com
客户
workers.domain.com
工人
我像这样为每个子域使用不同的蓝图
customers = Blueprint('customers', __name__, subdomain="www")
workers = Blueprint('workers', __name__, subdomain="workers")
对于 AUTH,我们使用 flask-login
我已经通过设置
成功地为不同的子域设置了不同的 REMEMBER_ME_COOKIE
REMEMBER_COOKIE_DOMAIN = None
我正在尝试做的是让每个电子邮件同时登录到每个子域的多个帐户(会话)
例如,如果我是一名工人,我想在 workers.domain.com
登录我的工人帐户,同时在 www.domain.com
登录我的客户帐户
问题是 Flask 对所有子域使用相同的会话 cookie,这意味着如果我登录到 workers 子域并在同一浏览器中打开客户子域,Flask 将给我相同的会话 cookie,我将使用工人帐户登录客户子域会导致很多其他问题
我试过的
- 将
SESSION_COOKIE_DOMAIN
设置为 None
并且仍然在所有子域之间共享相同的会话 cookie
我不知道如何实现的一些可能的解决方案
- 不同的子域(或蓝图)有不同的
SECRET_KEY
- 重新实现会话 cookie 以使用密钥对用户 ID 进行子域编码
任何想法将不胜感激
中所写
SESSION_COOKIE_DOMAIN
The domain match rule that the session cookie will be valid for.
If not set (None)
, the cookie will be valid for all subdomains of SERVER_NAME.
If False
, the cookie’s domain will not be set.
Default: None
解决方案是设置
SESSION_COOKIE_DOMAIN = False
因此未设置会话 cookie 的域,因此默认情况下浏览器会将其设置为当前的确切域(和子域)
这意味着 同一个 flask 应用程序对象中不同子域的不同会话
我有一个处理多个子域的烧瓶应用程序 假设我们有
www.domain.com
客户workers.domain.com
工人
我像这样为每个子域使用不同的蓝图
customers = Blueprint('customers', __name__, subdomain="www")
workers = Blueprint('workers', __name__, subdomain="workers")
对于 AUTH,我们使用 flask-login
我已经通过设置
成功地为不同的子域设置了不同的 REMEMBER_ME_COOKIEREMEMBER_COOKIE_DOMAIN = None
我正在尝试做的是让每个电子邮件同时登录到每个子域的多个帐户(会话)
例如,如果我是一名工人,我想在 workers.domain.com
登录我的工人帐户,同时在 www.domain.com
问题是 Flask 对所有子域使用相同的会话 cookie,这意味着如果我登录到 workers 子域并在同一浏览器中打开客户子域,Flask 将给我相同的会话 cookie,我将使用工人帐户登录客户子域会导致很多其他问题
我试过的
- 将
SESSION_COOKIE_DOMAIN
设置为 None
并且仍然在所有子域之间共享相同的会话 cookie
我不知道如何实现的一些可能的解决方案
- 不同的子域(或蓝图)有不同的
SECRET_KEY
- 重新实现会话 cookie 以使用密钥对用户 ID 进行子域编码
任何想法将不胜感激
SESSION_COOKIE_DOMAIN
The domain match rule that the session cookie will be valid for.
Ifnot set (None)
, the cookie will be valid for all subdomains of SERVER_NAME.
IfFalse
, the cookie’s domain will not be set.
Default: None
解决方案是设置
SESSION_COOKIE_DOMAIN = False
因此未设置会话 cookie 的域,因此默认情况下浏览器会将其设置为当前的确切域(和子域)
这意味着 同一个 flask 应用程序对象中不同子域的不同会话