定制Django-allauth社交登录和回调URL(通过前端服务重定向它们)

3
当我使用 django-allauth 注册/登录我的社交账户时,例如:http://localhost:8000/accounts/google/login/。进行身份验证后,Google 会将我们重定向回以下回调 URL:http://localhost:8000/accounts/microsoft/login/callback/
我想将上述URL重定向到前端服务,并从那里将其重定向到我们的后端服务器。有没有办法实现这一点?因为出于安全原因,只希望我们的前端服务器与后端交互,不允许任何其他第三方参与。
1个回答

1
我不确定你的应用程序在前端和后端之间使用了哪种类型的身份验证,但使用 allauth 默认回调函数可以帮助您自动创建或登录用户,无需额外的努力。如果您想在前端处理回调,只需要更改提供程序中的回调URL(例如在Google中,它是您获取客户端ID的地方)为位于前端应用程序中的URL,然后手动将回调参数发送到后端。

这是您应该执行的操作(假设您的前端托管在example.com上,而后端则在api.example.com中):

重定向URL:example.com/google/callback?{some_parameters_sent_by_google}

在您的前端应用程序中,您应该从URL中获取参数,然后将参数发送到后端(例如,使用POST请求)。

示例请求:

URL:api.example.com/login/social/ Body:

{
'social': 'google',
'parameters': {some_parameters_sent_by_google(as json)}
}

然后,在您的后端中,您可以手动处理登录或注册。

此外,如果您希望坚持使用 allauth,则可以使用自定义重定向,但这无法满足您限制后端-前端交互的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接