2010-07-09 118 views
2

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

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

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

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

任何帮助,将不胜感激!

+0

帐户是什么?用户帐户和管理员帐户有什么区别?两者如何相互作用? – Mike 2010-07-09 18:08:51

+0

@Mike这些帐户是针对网络应用的。当一个人注册时,他们输入他们的登录信息以及应用程序将用于执行该服务的公司数据。在帐户注册时,该用户成为“管理员”。该管理员可以将授权的“用户”分配给该帐户。这两种用户状态有几个原因,但最重要的是“管理员”具有完全访问权限,并且可以编辑信用卡信息和其他“敏感”信息。 “用户”可以访问除“敏感”数据以外的大部分功能。 – user387990 2010-07-09 18:49:18

回答

6

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

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

+0

我的想法。 – 2010-07-09 18:08:16

+0

我也是。这听起来更像是用户角色和权限问题,而不是身份验证或认证问题。 – Mike 2010-07-09 18:13:12

+0

为了区分应用程序权限,我没有看到维护单独的相同帐户的重点。应用程序需要的角色越多,这种设计方法的缺陷就越明显。 – 2010-07-09 18:15:12

0

如果有2个账户为同一用户(E-mail地址),问他想,只是一个想法要记录哪一个......

+0

是的,这是我们的第一个想法......我们只是希望有一个解决方案,可以让我们消除这一步骤。 – user387990 2010-07-09 19:17:40

0

你需要给用户以某种方式告诉其他想要登录的帐户。例如,您可以在登录表单旁边有一个下拉菜单,用户可以在登录时作为管理员或作为访客进行选择。

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

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

0

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

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

0

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

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

+0

我想也是这样做的。唯一的问题是,用户可能被分配到多个帐户,可以说6个。用户将不得不记住6个域 - 而不是6个用户名......除非他们使用书签,否则没有太大的改进。不过这是个不错的主意。谢谢! – user387990 2010-07-09 19:08:14