【问题标题】:MySQL Unique IdentifierMySQL 唯一标识符
【发布时间】:2010-07-09 17:58:13
【问题描述】:

我们正在尝试开发一个系统,在该系统中,用户可以创建一个用户名是该用户的电子邮件地址的帐户。问题是,该人可以拥有自己的唯一帐户(他是管理员),并且可以成为其他人帐户的“用户”。

帐户的“管理员”可以将某人的电子邮件地址分配给他们的帐户,并为该人创建密码以作为用户登录。

在 MySQL 中,由于电子邮件地址是唯一标识符,因此我们在尝试识别该人登录的帐户时遇到了问题。有没有更好的方法来做到这一点?

显然,为分配给一个人的每个帐户使用唯一的用户名可以解决此问题,但我们希望使用一个电子邮件地址,因为这样对用户来说不太容易记住。

任何帮助将不胜感激!

【问题讨论】:

  • 帐户有哪些用途,用户帐户和管理员帐户有什么区别?两者如何互动?
  • @Mike 这些帐户用于 Web 应用程序。当一个人注册时,他们输入他们的登录信息以及应用程序将用于执行服务的公司数据。在帐户注册时,该用户成为“管理员”。然后,该管理员可以将授权的“用户”分配给该帐户。这两种用户状态有几个原因,但最重要的是“管理员”具有完全访问权限,可以编辑信用卡信息和其他“敏感”信息。 “用户”可以访问除“敏感”数据之外的大部分功能。

标签: mysql user-accounts


【解决方案1】:

关注点分离原则适用,将两个功能(登录和访问帐户)分开,使它们成为独立的独立功能......
用户登录,(电子邮件和密码只是验证他/她就是他们所说的人)。它不与单个帐户相关联...单独,将每个帐户与允许访问它的用户相关联。 (在数据库中,这将是多对多表) 然后,如果用户是管理员并且拥有多个帐户的访问权限,则询问他/她希望访问哪个帐户。

这增加了一个好处,如果您有审计需求,您将能够记录,用于审计目的,不仅是哪个帐户被用于执行任何业务功能,而且是执行该功能的实际用户...

【讨论】:

  • 我的也是。这听起来更像是用户角色和权限问题,而不是识别或身份验证问题。
  • 我看不出为了区分应用程序权限而维护单独的、相同的帐户有什么意义。应用程序需要的角色越多,这种设计方法的缺陷就越明显。
  • @OMG,你不明白“分离”的哪一部分 。分开意味着账户和用户是分开的实体,分开的对象,分开的表等。不需要重复它们......
  • @Charles:观看人们将其解释为需要 ADMIN 特定表...
  • @Charles 感谢您的回复。这实际上是我们正在考虑做的事情。实际上,我相信这就是 Google 的 AdWords MCC 帐户的运作方式。但是,我们希望有一种解决方案可以消除用户在选择他们想要访问的帐户时所需的输入。
【解决方案2】:

您需要为用户提供一种方法来告诉他要登录哪个帐户。例如,您可以在登录表单旁边有一个下拉菜单,用户可以在其中选择以管理员身份登录或以访客身份登录。

否则,您可能会在登录表单之后出现第二个屏幕,用户可以在其中选择两个选项。

无论如何,如果您不使用两个单独的用户名(或密码,顺便说一句),您将无法知道用户要登录哪个帐户,

【讨论】:

    【解决方案3】:

    帐户的“管理员”可以将某人的电子邮件地址分配给他们的帐户,并为该人创建密码以作为用户登录。

    在这种情况下,我认为最好将用户移动到另一个表,例如 account_users,并在您的情况下通过主键 id 或用户名与 people 表关联。这样一个管理员可以创建多个用户,即使其中任何一个用户是现有管理员。不知道这是否是最好的方法?

    【讨论】:

      【解决方案4】:

      确定登录哪个帐户的常用方法是拥有帐户子域。这对于“以公司为中心”的网络应用特别有效。

      换句话说,如果用户拥有公司 XYZ 的帐户,那么他们的帐户地址可能是 companyxyz.webapp.com。子域可以在注册时自动生成或选择。使用帐户子域,用户登录只需要在给定的帐户子域中是唯一的。

      【讨论】:

      • 我也想过这样做。唯一的问题是,一个用户可能被分配到多个帐户,比如说 6 个。用户必须记住 6 个域 - 而不是 6 个用户名......当然,除非他们使用书签,否则没有太大的改进。不过,这是一个不错的主意。谢谢!
      【解决方案5】:

      如果同一用户(电子邮件地址)有 2 个帐户,请询问他想登录哪个帐户。只是一个想法...

      【讨论】:

      • 是的,这是我们的第一个想法……我们只是希望有一个解决方案可以让我们消除这一步。
      猜你喜欢
      • 1970-01-01
      • 2014-03-05
      • 2012-06-02
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多