问题描述
在使用Flask,Flask登录和Flask-Session时,我遇到了以下问题:
单击外部站点(跨域)上的链接(该链接链接到受@login_required
保护的路由时),烧瓶登录_load_user
功能无法检索用户信息(因为没有Cookie随跨域请求一起发送)。 (不使用装饰器,current_user.is_authenticated
似乎是False
。)
(来自flask_login.login_manager.py
)
if user is None:
config = current_app.config
cookie_name = config.get('REMEMBER_COOKIE_NAME',COOKIE_NAME)
header_name = config.get('AUTH_HEADER_NAME',AUTH_HEADER_NAME)
has_cookie = (cookie_name in request.cookies and
session.get('_remember') != 'clear')
if has_cookie:
cookie = request.cookies[cookie_name]
user = self._load_user_from_remember_cookie(cookie)
elif self._request_callback:
user = self._load_user_from_request(request)
elif header_name in request.headers:
header = request.headers[header_name]
user = self._load_user_from_header(header)
如果使用了装饰器,则请求将被重定向到/?next=/protectedView
。如果仅使用current_user.is_authenticated
,将得到False
。
每次单击刷新时,都会重新创建并覆盖会话cookie。但是,如果我单击URL栏并按Enter,则用户加载程序无需创建新会话就可以访问Remember_cookie并加载用户数据。
在从另一个域内输入受保护的路由时,是否有任何简单方便的方式允许加载用户数据?
更新:我发现将REMEMBER_COOKIE_SECURE
设置为None
而不是Strict
会导致烧瓶登录来登录用户。现在,链接将重定向到正确的页面。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)