【问题标题】:Django: Using custom AUTH system, why is the User model always still needed?Django:使用自定义 AUTH 系统,为什么仍然需要 User 模型?
【发布时间】:2011-01-18 13:13:28
【问题描述】:

我正在开发一种 SAAS,并且最难思考为什么我需要将“用户”用于我自己以外的任何事情。我不知道为什么,但想到我作为整个软件的开发人员/管理员,拥有完整的 Django 管理员访问权限(如 Sauron 之眼),拥有与“帐户”相同类型的用户对象,这让我感到很奇怪" 持有人的 "UserProfile" 有。请帮助我理解为什么这是必要的。

例子:

class Account(models.Model): # represents copporate customer
    admin = models.ForeignKey(User)
    # other fields ...

class UserProfile(models.Model):
    user = models.ForeignKey(User)
    account = models.ForeignKey(Account)

感觉就像我正在将内置管理功能与我的帐户持有人的用户功能混合在一起。这仅仅是为了重用 request.user 等元素吗?

【问题讨论】:

    标签: django django-authentication django-users


    【解决方案1】:

    嗯,代码和功能的重用可能是一个令人愉快的副作用,但从根本上说,我认为这并没有被破坏。

    用户代表使用您网站的人。在基本层面上,这个人是谁或他们需要什么特性或功能并不重要 - 只是他们提出请求并且可以通过某种方式识别。

    可以在不同的层中添加更多功能,或者通过组或权限等内置组件,或者通过您自己在示例中构建的其他东西。

    【讨论】:

    • @Andy Hume 所有属性怎么样:用户名、名字、姓氏、电子邮件、密码、is_staff、is_active、is_superuser 等等。创建用户时是否需要使用所有这些?我想我只是无法理解所有这些属性如何适合我自己的系统。是我应该使用所有这些属性吗?如果 is_superuser=True 如果他们只输入 www.example.com/admin/ ,这不会给他们所有访问权限吗?我查看了 Django-Annoying,它有一个 AutoOneToOneField() 可以为您创建用户,但是设置所有属性呢?
    • 您当然不必使用所有属性。根据您希望特定类型的用户能够执行的操作,您可以尽可能少地或尽可能多地公开。是的, is_superuser=True 应该只为您自己和少数需要它的特权人士保留。 “普通”用户会将其设置为 False。如果需要,您可以通过 OneToOneField 设置所有属性,例如。 profile.user.last_name = "琼斯"
    猜你喜欢
    • 2017-03-12
    • 2015-08-15
    • 2019-09-02
    • 2020-07-05
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多