MySQL唯一标识符

时间:2010-07-09 17:58:13

标签: mysql user-accounts

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

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

在MySQL中,由于电子邮件地址是唯一标识符,因此我们在尝试确定将该人员记录到哪个帐户时遇到问题。有没有更好的方法呢?

显然,为一个人分配的每个帐户使用唯一的用户名可以解决这个问题,但我们希望使用一个电子邮件地址,因为对于用户而言要记住的更少。

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您需要为用户提供一种方法来告诉他想要登录的帐户。例如,您可以在登录表单旁边有一个下拉列表,用户可以选择以管理员身份登录还是作为访客登录。

否则,您可以在登录表单后面有第二个屏幕,用户可以选择这两个选项。

在任何情况下,如果您不使用两个单独的用户名(或顺便使用的密码),则无法知道用户想要登录的帐户,

答案 3 :(得分:0)

  

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

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

答案 4 :(得分:0)

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

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

相关问题