我应该在Django的数据库中保存用户后端吗?

时间:2016-02-23 09:51:08

标签: python django django-authentication

我正在创建一个支持本地登录后端和LDAP登录(通过django-auth-ldap)的Django网站,以及将来可能更多。

我正在进入Django登录和后端sutff并且有几个问题 - 主要是是否有任何理由Django不在数据库中保留用户创建后端?用户A是否应该与后端User链接(并且通过链接,我的意思是django.contrib.auth.backends.ModelBackend模型上的字段)以确保安全/说服原因?

我正在开始创建自定义用户模型,并考虑添加此类字段。 明确地知道哪个后端用于创建/登录用户的能力听起来对我来说是逻辑上的,但事实上Django默认没有那个,而且我找不到任何东西类似的互联网让我担心我没有想到真的为什么它按原样完成的理由。

提前致谢,
帕维尔

1 个答案:

答案 0 :(得分:0)

Django不需要那些信息。一旦用户通过身份验证,并且django具有User模型,它就不关心后端对其进行身份验证。用户模型数据存储在一个源中。用户模型(无论是默认模式还是自定义模式)是一致的,并且在整个django项目和模式中具有相同的属性,功能和行为。开箱即用的django中没有任何东西可以处理不同的用户模型。

您可以使用AbstractBaseUser扩展它,但是在同一个项目中管理真正不同的用户,尤其是使用核心django模块,这是一个支持。

Django使用用户模型很多,你必须手动找到它所做的每个地方,并将你自己的路由器提供给正确的后端。没有这方面的API(例如,数据库路由器),它会成为一堆乱七八糟的东西,每次升级都可能会更加混乱。

除了自定义用户模型之外,Django还支持“身份验证后端”。您正在寻找的一些功能可通过此选项在正式API中使用和公开。所以你可能想坚持下去。 见:https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#authentication-backends