Django Rest API:具有多个数据库的用户身份验证

问题描述

我需要开发可以访问多个数据库的Django rest API,还需要从多个数据库进行身份验证

ex-

user1-从database1用户表进行身份验证 user2-从database2用户表进行身份验证

路由器URL前-

http://examle.com/API/auth/{site1}/login-此路由应使用database1用户用户名密码 http://example.com/API/auth/{site2)/登录-此路由应使用database2用户用户名密码

我如何完成这项任务?

解决方法

您可以通过多种方法来执行此操作,但是我建议您对数据库中的每个表使用两种不同的模型,例如,将它们分别命名为User1和User2。

根据在django应用程序中实现登录和用户模型的方式,您可以在应用程序中定义这两个模型,它们继承自django.contrib.auth.models.AbstractUser。 (诸如this之类的解决方案可能不适合您,因为它想在数据库中创建由django本身创建的auth_user表的外键。这会给您带来麻烦,因为您使用的是2个不同的表,我想继承模型,并将其字段包含在您自己的模型中(这将使其列包含在您自己的表中)将是一个更好的解决方案。

定义两个模型后,您需要连接到两个不同的数据库并在应用程序中对用户进行身份验证。为此,我建议您阅读django的this article,其中介绍了如何连接到多个数据库以及如何路由它们(意味着何时连接每个数据库)。

拥有两个模型并在您的应用程序中连接到它们之后,您只需要自定义身份验证。这取决于您在上述URL和视图中如何实现登录和身份验证。如果您只需要访问模型并且可以自己检查凭据,那么您已经完成了,因为您已经知道如何访问每个模型。如果您使用django函数登录,建议您阅读this part of article,并自己实现任何自定义。

有关更多信息和详细信息,您需要提供有关如何实现身份验证的信息,但我想那将是另一个问题。