Django补充外部源身份验证

2024-09-28 21:42:08 发布

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

我想建立一个Django网站,主要由大学生维护和使用。我需要限制对某些批准的学生访问几个页面,但如果我需要为每个想要登录的学生创建一个新的Django用户,这将是非常不可维护的。幸运的是,大学提供了一个API来检查用户名/密码组合是否正确。所以我想到了创建一个身份验证模型来补充Django的模型,在这个模型中,用户的大学帐户可以得到管理员的批准,之后它就是查看特定页面的有效登录。你知道吗

因此,基本上,一些用户可能会使用Django帐户(如果他们负责网站的内容),而其他用户可能只是使用uni帐户登录以查看一些页面。对于uni帐户,应该存储最少的信息量(换句话说,只有用户名才真正需要批准某些用户)。你知道吗

我似乎不知道如何在Django建立这样一个系统。我不能使用标准的^{}对象,因为它存储的数据是完全冗余的,而我不能substitute the user model,因为那样只会使事情变得非常复杂。完全忘记User模型似乎是合理的,但是^{}需要返回一个有效的用户。这让我想知道,我能用尽可能少的信息(除了用户名之外的伪数据)创建普通的Django用户,然后用API对他们进行身份验证吗?可能吧,但这似乎不是个好主意。你知道吗


Tags: 数据django用户模型身份验证api密码网站
1条回答
网友
1楼 · 发布于 2024-09-28 21:42:08

要使用universityapi对用户进行身份验证,只需编写an authentication backend。然后,您可以在这些uni用户第一次登录时为其创建本地用户,因为只有两个必填字段:username和password。您可以使用set_unusable_password(),因此check_password()对于此用户永远不会返回True。你知道吗

The Django admin system is tightly coupled to the Django User object described at the beginning of this document. For now, the best way to deal with this is to create a Django User object for each user that exists for your backend (e.g., in your LDAP directory, your external SQL database, etc.) You can either write a script to do this in advance, or your authenticate method can do it the first time a user logs in.

相关问题 更多 >