无法通过某些子域的Django Rest Framework对用户进行身份验证

时间:2020-07-21 03:07:53

标签: python django reactjs flask

我当前的设置包括以下内容:

1) React JS application (react.example.com:3000)
2) Flask server to serve backend API calls (backend.example.com:5000)
3) Authentication server using Django Rest Framework (auth.example.com)

我已将身份验证服务器配置为使用具有以下设置的会话身份验证:

SESSION_COOKIE_DOMAIN = '.example.com'  
CORS_ALLOW_CREDENTIALS = True  
SECURE_SSL_REDIRECT = True  
SESSION_COOKIE_SAMESITE = None
SESSION_COOKIE_SECURE = False
CSRF_USE_SESSIONS = True

我还在Django中的 auth.example.com/check_auth 上设置了一个端点,以检查用户是否已通过身份验证

def authorization(request):
    if request.user.is_authenticated:
        return HttpResponse('User is Authenticated')
    else:
        return HttpResponse('Not Authenticated')

登录后,当我从ReactJS应用程序向端点发送GET请求时,我收到正确的响应“用户已通过身份验证”。效果很好。

axios.get('https://auth.example.com/check_auth', {withCredentials: true}).then(res => { 
    console.log(res) 
})

但是,我想在我的Flask服务器中的某些端点内发送类似的请求,但无法正常工作。

例如:

@app.route('/check', methods=['GET'])
def check_auth():
    res = requests.get('https://auth.example.com/check_auth')
    return res.text

我登录并通过React应用程序将GET请求发送到 backend.example.com:5000/check 后,我希望返回的内容为“用户已通过身份验证”,但我却得到了“不”已验证”。

这似乎意味着当请求来自Flask时,设置为域'.example.com'的django会话cookie不会发送到Django身份验证服务器吗?

我对为什么会这样感到困惑,因为我认为在SESSION_COOKIE_DOMAIN中包含通配符会意味着我可以从React和Flask子域中进行身份验证。

任何帮助将不胜感激。谢谢!

0 个答案:

没有答案
相关问题