【问题标题】:Django complementary external source authenticationDjango 补充外部源认证
【发布时间】:2015-04-15 11:55:25
【问题描述】:

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

所以本质上,一些用户可能使用 Django 帐户(如果他们负责网站的内容),而其他用户可能只是使用他们的 uni 帐户登录查看一些页面。对于 uni 帐户,应存储最少的信息量(换句话说,仅需要用户名来批准某些用户)。

我似乎无法弄清楚如何在 Django 中构建这样的系统。我不能使用标准的User 对象,因为它存储的数据是完全冗余的,我不能使用substitute the user model,因为那只会让事情变得异常复杂。完全忘记User 模型似乎是合理的,但Authenticate 需要返回一个有效用户。这让我想知道,我是否可以使用尽可能少的信息(除了用户名之外的虚拟数据)创建常规 Django 用户,然后使用 API 对他们进行身份验证?可能,但这似乎不是一个好主意。

【问题讨论】:

    标签: python django django-authentication


    【解决方案1】:

    要使用大学 API 对用户进行身份验证,您只需编写 an authentication backend。然后,您可以在这些 un​​i 用户第一次登录时为他们创建一个本地用户,因为只有两个必填字段:用户名和密码。你可以使用set_unusable_password() 这样check_password() 这个用户永远不会返回True。

    Django 管理系统与 Django User 对象紧密耦合 在本文档的开头描述。目前最好的办法 处理这个是为每个用户创建一个 Django User 对象 存在于您的后端(例如,在您的 LDAP 目录中,您的外部 SQL 数据库等)您可以编写一个脚本来执行此操作 提前,或您的身份验证方法可以在用户第一次执行此操作 登录

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 2012-08-16
      • 2017-10-16
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多