【问题标题】:Django rest api: user authentication with multyple databsesDjango rest api:使用多个数据库进行用户身份验证
【发布时间】:2020-12-21 06:29:54
【问题描述】:

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

前-

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

路由器网址前 -

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

我怎样才能完成这项任务?

【问题讨论】:

  • 在你的情况下,你必须尝试 - with connection('db-name') 来执行你的查询。但是,我认为您正在开发一个多租户 SAAS 应用程序。如果这是真的,我建议有更好的方法(如多租户设置)来实现这一点,而不是使用不同的数据库。

标签: django rest authentication django-rest-framework multiple-databases


【解决方案1】:

有很多方法可以做到这一点,但我建议你为数据库中的每个表使用两种不同的模型,例如我们称它们为 User1 和 User2。

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

定义两个模型后,您需要连接到两个不同的数据库并在您的应用中验证用户。为此,我建议您阅读 django 的 this article,其中解释了如何连接到多个数据库以及如何路由它们(即何时连接每个数据库。)

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

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

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2019-04-23
    • 1970-01-01
    • 2023-03-26
    • 2016-04-16
    • 2016-06-03
    • 2013-01-05
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多