自定义Djangoallauth社交登录和回拨URL(通过前端服务重定向)

2024-04-20 02:50:30 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用django allauth like注册/登录我的社交帐户时

http://localhost:8000/accounts/google/login/

现在,在进行身份验证之后,Google将我们重定向回下面的回调URL,如下所示

http://localhost:8000/accounts/microsoft/login/callback/

我想把上面的URL改为重定向到前端服务,然后再从那里重定向到后端服务器。有没有办法做到这一点?因为出于安全原因,我只允许我们的前端服务器与后端交互,而不允许任何其他第三方交互


Tags: django服务器身份验证localhosthttpurlgooglelogin
1条回答
网友
1楼 · 发布于 2024-04-20 02:50:30

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

以下是您应该做的事情(假设您的前端位于example.com,后端位于api.example.com):

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

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

请求示例:

URL:api.example.com/login/social/ 正文:

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

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

另外,如果您想坚持使用allauth,可以使用custom redirect,但它不能满足您限制后端前端交互的需要

相关问题 更多 >