【问题标题】:Managing multiple user base in same database table在同一个数据库表中管理多个用户群
【发布时间】:2013-12-17 15:24:04
【问题描述】:

我的团队正在处理一个 Django 项目。它将有一个管理小组来控制其下的几家公司。要将新公司添加到系统中,管理员将使用面板添加公司的域。这些域实际上将指向我们的系统。我们将通过 url 检测公司并根据该公司的域管理视图。例如:我们将展示该公司下的用户,进行该公司下的交易等等。公司的所有信息,如用户信息、公司详细信息和成员都将存储在我们项目的主数据库中。用户将使用他们的电子邮件登录。因此,我们无法使用 Django 的身份验证模型使数据库中的电子邮件字段(或用户名)唯一,因为电子邮件用户可以在不知情的情况下注册到多个不同的公司。我的问题是,对于这种情况,我们应该采取什么方法?

我们正在寻找答案的问题:

  • 为用户设置一个随机用户名,但是我们在 syncdb 之后在命令行上创建超级用户时遇到了一个问题,因为第一个参数将是使用 USERNAME_FIELD 定义的参数。如何处理这个独特的用户名字段问题?

  • 为每个公司创建不同的用户表。如果是这样,如何自动执行此操作?

【问题讨论】:

    标签: python database django administration data-management


    【解决方案1】:

    看起来您可能会遇到一些复杂的用户/ID 管理场景。 考虑使用某种单点登录。 有几个 Django 友好的解决方案可以帮助您开发身份代理:

    django.contrib.auth 的 OpenID 集成 https://launchpad.net/django-openid-auth

    我使用支持 OpenID 的 OpenAm 这是一个给出一些例子的帖子 Implementing Single Sign On (SSO) using Django

    Django 社交认证 https://github.com/omab/django-social-auth

    或者,您可以尝试“使用电子邮件地址进行 Django 身份验证” http://www.micahcarrick.com/django-email-authentication.html

    【讨论】:

    • 可能我无法清楚地说明情况。让我通过示例来澄清一下:假设我们有一个名为 Application 的表,还有另一个名为 Users 的表。将有几个应用程序,它们的所有用户都将在同一个名为“用户”的表中。每个用户将能够加入多个应用程序。但是应用程序不会共享用户,每个用户对于不同的应用程序都有不同的配置文件(信息)。我们认为为每个应用程序创建不同的表,但我们如何动态地做到这一点?创建一个用户表将所有用户保存在一起是否合乎逻辑?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多