完全定制的Django登录系统?

2024-06-03 01:27:22 发布

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

我目前正在编写一个应用程序,我计划将其作为SaaS销售。在不泄露“秘密”的情况下,我可以说它基本上是一个“文档编辑系统”,在这个系统中,许多用户都会提交文档。在

基本的继承权是:

  • 机构
  • 个人
  • 文件
  • 子文档

因此,每个人都应该能够浏览他们机构中任何人提交的所有文档,但只能编辑他们创建的文档。在

任何人都不应该意识到另一个机构的存在——这一切都应该被完全隐藏起来。在

我已经编写了一个Django/Python类来帮助实现这一点,但是我读过的所有关于身份验证的文档都要求我使用User对象。这只是Django的一个限制,还是有办法做到这一点?在

如果有一种方法,我如何将自己的“个人”类详细信息附加到“请求”对象上,以便验证应该向用户显示的内容?在


Tags: 文件对象django用户文档应用程序编辑机构
3条回答

auth模块通常用于覆盖身份验证情况。 为您提供组(机构)、用户(个人)和权限。 使用这些功能,您可以在允许用户查看或编辑文档之前检查用户是否是组成员或拥有文档。在

http://docs.djangoproject.com/en/dev/topics/auth/

如果您需要超越典型的用例,例如支持LDAP,那么您可以考虑编写自己的身份验证后端。在

http://docs.djangoproject.com/en/dev/topics/auth/#other-authentication-sources

您需要的是授权,而不是身份验证。正如您所发现的,Django的内置授权系统相当粗糙。如果你想要一个更完整的解决方案,你需要类似django-authority的东西。在

一般来说,如果您需要将更多信息附加到内置的User模型中,您将创建一个新的模型,该模型将子类models.Model(而不是User),并在设置中将其标识为AUTH_PROFILE_MODULE。您可以通过调用useruser获得模型的适当实例。(见http://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users)。在

一般情况下,如果用户需要更多的权限,请使用django,这样可以更好地使用django。我之所以包含这个答案只是因为它似乎是您所要求的(一种将类附加到User)的方法,而不是您真正需要的(授权)。在

相关问题 更多 >