在2个数据库之间共享用户

时间:2011-03-12 11:29:55

标签: php mysql database database-design rbac

我正在用PHP开发这个应用程序。该应用程序将包含一个管理区域,该区域还将包含员工功能。该应用程序的另一部分是面向客户的网站。

管理区域有自己的数据库。面向客户的网站也有自己的数据库。

在管理数据库中,我有一个包含用户的表,我还计划实施RBAC,以便用户可以拥有角色,权限等。

面向客户的网站还允许客户注册并存储在客户网站数据库的用户表中。

我需要的是能够让员工在客户网站上登录。他们还需要拥有权限,控制客户网站的哪些部分可以修改,以及客户网站数据库中哪些行可以更改。

实施此方法的最佳方式是什么?

干杯:)

2 个答案:

答案 0 :(得分:1)

我建议在可能的情况下始终合并处理相同概念的表(此处为用户)。

这里的问题是数据访问安全性,无论您的数据如何存储(一个或两个表,一个或两个数据库)。

使用MySQL(以及许多其他常见的DBMS),您可以:

  • 创建一个只能访问某些表的MySQL帐户,只对其执行某些操作(例如只有SELECT),只访问某些列等。

  • 隐藏MySQL帐户中的表格,只允许访问此表格中的视图(过滤列/表格结果)。

无论您的数据结构是什么,您都需要检查一些员工数据(登录名,密码,权限等),并且您的代码必须使用具有足够权限的MySQL帐户。

因此,我建议您将用户放在一个表中,添加表来描述角色(员工,客户等),并明智地编写代码。

请注意单独解决数据库设计数据访问安全性问题。数据访问安全性不应该导致您在数据库设计中选择不合逻辑的方式。

答案 1 :(得分:0)

您可以这样做:

$sql = "SELECT * FROM employeedb.employee_user_table WHERE employee_id = '???'";

来自线程启动器的评论问题。对于两个用户表,您可以使用以下解决方案:

  • 创建新表。例如:global_user_table with field:

    • USER_ID
    • table_source(真实表源)
    • is_special_user(或类似的东西)
    • additional_field1
    • additional_field2
    • 等等等
  • 每次用户登录时,请检查此表并在会话中存储table_source,以供日后使用。