问题描述
当我使用 django-allauth like 注册/登录我的社交帐户时
http://localhost:8000/accounts/google/login/
现在进行身份验证后,Google 将我们重定向回以下回调 URL 为
http://localhost:8000/accounts/microsoft/login/callback/
我想将上述 URL 更改为重定向到前端服务,然后将其从那里重定向到我们的后端服务器。有没有办法实现这一目标?因为出于安全原因,我只有我们的前端服务器与我们的后端交互,而不是任何其他第三方。
解决方法
我不确定您在应用程序中使用的身份验证类型(前端和后端之间),但使用 allauth
默认回调将帮助您自动创建或登录用户而无需额外工作。
如果您想在前端处理回调,您只需要将提供程序中的回调 URL(例如在 google 中,它是您获取客户端 ID 的位置)更改为位于前端应用程序中的 URL,然后,手动发送回调参数给后端。
这是您应该做的事情(假设您的前端托管在 example.com
上,而您的后端位于 api.example.com
):
重定向网址:example.com/google/callback?{some_parameters_sent_by_google}
在您的前端应用程序中,您应该从 URL 获取参数,然后将参数发送到后端(例如在 POST 请求中)。
示例请求:
网址:api.example.com/login/social/
正文:
{
'social': 'google','parameters': {some_parameters_sent_by_google(as json)}
}
然后,在您的后端,您可以手动处理登录或注册。
此外,如果您想坚持使用 allauth
,您可以使用 custom redirect,但它不能满足您限制后端-前端交互的需要。