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

2024-06-17 15:20:46 发布

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

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

我正在进入Django登录和后端sutf,有几个问题-主要是Django没有将用户创建后端保存在数据库中的原因是什么?用户A是否应该与后端django.contrib.auth.backends.ModelBackend连接(我指的是User模型上的一个字段)与后端{}进行链接吗?在

我正准备创建一个自定义用户模型,并考虑添加这样的字段。对我来说,清楚地知道哪个后端是用来创建/登录用户的这一能力听起来是合乎逻辑的,但事实上Django默认没有这个功能,而且我在互联网上找不到类似的东西,这让我担心,我没有想到一个真的的好理由来解释为什么会这样做。在

提前感谢,
爪哇


Tags: django用户模型auth数据库网站原因ldap
1条回答
网友
1楼 · 发布于 2024-06-17 15:20:46

Django不需要这些信息。一旦用户经过身份验证,并且django有了一个用户模型,它就不关心哪个后端验证了它。用户模型数据存储在一个源中。用户模型(无论是默认的还是自定义的)是一致的,在整个django项目和模式中具有相同的属性、功能和行为。没有现成的django可以处理不同的用户模型。在

您可以使用AbstractBaseUser来扩展这一点,但是在同一个项目中管理真正不同的用户,特别是使用核心django模块,是一项艰巨的任务。在

Django经常使用用户模型并且您必须手动定位它所做的每个位置,并提供自己的路由器到正确的后端。这方面没有API(比如说,db路由器),它将是一个混乱的黑客,可能会在每次升级中更加混乱。在

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

相关问题 更多 >