2

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

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

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

显然,为一个人分配到的每个帐户使用唯一的用户名可以解决这个问题,但我们希望使用一个电子邮件地址,因为它不会让用户记住。

任何帮助,将不胜感激!

4

5 回答 5

6

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

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

于 2010-07-09T18:06:12.623 回答
0

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

于 2010-07-09T18:02:55.090 回答
0

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

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

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

于 2010-07-09T18:05:32.713 回答
0

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

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

于 2010-07-09T18:07:39.650 回答
0

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

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

于 2010-07-09T18:08:36.357 回答