Yii-具有一个用户身份验证的多个数据库

Yii-具有一个用户身份验证的多个数据库,yii,Yii,我在尝试用Yii(v=1.1)开发应用程序时遇到了一个问题。客户希望应用程序具有多个数据库(每个客户一个)。这意味着我们将拥有未知数量的数据库。他还希望只有一个用户认证系统——考虑到这一点,用户可以选择(和特权)属于多个数据库。因此,我正在考虑它的发展方式 你有没有遇到过这样的事情 你应该首先更好地定义你的目标,因为我不太清楚你想要实现什么,但我怎么看 决定要将用户存储在何处: 同一用户是否能够使用相同的登录信息连接到两个不同的客户数据库 您是否需要从一个地方管理所有客户的所有用户 您可能有

我在尝试用Yii(v=1.1)开发应用程序时遇到了一个问题。客户希望应用程序具有多个数据库(每个客户一个)。这意味着我们将拥有未知数量的数据库。他还希望只有一个用户认证系统——考虑到这一点,用户可以选择(和特权)属于多个数据库。因此,我正在考虑它的发展方式


你有没有遇到过这样的事情

你应该首先更好地定义你的目标,因为我不太清楚你想要实现什么,但我怎么看

决定要将用户存储在何处:

  • 同一用户是否能够使用相同的登录信息连接到两个不同的客户数据库
  • 您是否需要从一个地方管理所有客户的所有用户
您可能有以下情况:

仅将用户存储在一个公共数据库中,而不存储在客户数据库中:

  • 登录时,告诉Yii使用用户模型的“通用”数据库
  • 您还可以有一个处理用户管理的公共应用程序
  • 您还可以为客户提供管理自己用户的可能性
  • 您可以在Users表中有一个“customer”字段来指示它所属的客户,也可以有一个“Users\u customers”表,在登录屏幕之后,用“choose customer”屏幕提示用户,这样一个唯一的用户就可以登录多个客户
仅在客户数据库中存储用户:

  • 如果您不需要一个公共场所来管理用户,或者不需要在客户之间共享用户,只需在每个客户数据库中都有一个用户表,这样用户“alex”就可以存在于两个数据库中,并具有不同的登录信息
  • 在这里,您可以简单地在登录表单中添加另一个字段(是的,我看到有一个应用程序可以这样做),例如,不需要用户名和密码字段,而是要求输入“Office,Username和Password”,Office将是客户数据库的名称。或者,您甚至可以只使用用户名字段,强制用户输入诸如“alex@office“作为用户名,然后用“@”拆分,就知道它属于哪个办公室
  • 然后,只需在登录屏幕和会话中使用这些信息,就可以告诉Yii要连接到哪个客户数据库
所以正如你所看到的,它可以用不同的方式来完成。一旦你选择了你的方式,你就需要一个实现


如果您不知道如何实现,也许我可以提供更多与Yii相关的技术信息。

我不认为从何处开始使用多数据库是一个好主意……您必须有一个中央数据库,以便找到用户并访问其他数据库。