1

在使用 Flask、Flask-Login 和 Flask-Session 时,我遇到了以下问题:

当单击外部站点(跨域)上的链接时,该链接指向受保护的路由@login_required,flask-logins _load_user-function 无法检索用户信息(因为跨域请求未发送 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_SECURENone而不是Strict会导致烧瓶登录登录用户。该链接现在重定向到正确的页面。

4

0 回答 0