微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

自定义 django-allauth 社交登录和回调 URL通过前端服务重定向它们

如何解决自定义 django-allauth 社交登录和回调 URL通过前端服务重定向它们

当我使用 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,但它不能满足您限制后端-前端交互的需要。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。