2011-03-12 90 views
1

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

行政区域拥有自己的数据库。面向客户的网站也有自己的数据库。

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

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

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

实现此目的的最佳方式是什么?

干杯:)

+1

任何理由有2个数据库? – 2011-03-12 11:34:23

+0

主要原因是我想完全隔离员工和内部数据中的客户数据。 – F21 2011-03-12 11:39:10

+1

这意味着什么“完全隔离”?您可以在同一数据库中设置权限 – 2011-03-12 11:42:00

回答

0

你可以做这样的事情:

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

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

  • 创建新表。例如:global_user_table与字段:

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

+0

这就是我现在所倾向的解决方案。在网站的表格中,我们可以有普通用户,或者我们可以在雇员数据库中包含用户标识的“特殊用户”。有了这条信息,我们首先对网站用户进行身份验证,看看是否有匹配。如果我们不这样做,我们会对雇员数据库进行身份验证以获取用户标识。然后我们将用户ID与客户数据库中的“特殊用户”进行匹配,以查看他们是否有权访问该网站。在这种情况下,可以针对“特殊用户”存储客户站点的权限。 – F21 2011-03-12 11:57:25

+0

虽然上面的方法看起来非常复杂。 – F21 2011-03-12 11:57:57

+0

更新了我的答案 – ariefbayu 2011-03-12 13:36:14

1

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

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

随着MySQL的(和许多其他常见的DBMS),您可以:

  • 创建MySQL账户将只能访问某些表的访问,就只有它的一些操作(例如,只选择),访问只有一些列等

  • 从MySQL帐户隐藏一个表,并只给这个表上的一个视图(筛选列/表结果)的访问权限。

无论是你的数据结构,你将需要检查的一些员工数据(登录名,密码,权限等),你的代码必须使用有足够权限应该是一个MySQL账户。

因此,我建议您将用户放在一张表中,添加表格来描述角色(员工,客户等)和明智的代码。

记住,解决单独数据库设计数据访问安全问题。数据访问安全不应该导致您在数据库设计中进行不合逻辑的选择。

相关问题