1

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

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

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

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

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

实现这一点的最佳方法是什么?

干杯:)

4

2 回答 2

1

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

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

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

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

  • 隐藏 MySQL 帐户中的表并仅授予对该表的视图的访问权限(过滤列/表结果)。

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

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

请记住分别解决数据库设计数据访问安全问题。数据访问安全不应导致您在数据库设计中做出不合逻辑的选择。

于 2011-03-12T14:47:24.230 回答
0

你可以这样做:

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

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

  • 创建新表。例如:带有字段的 global_user_table:

    • 用户身份
    • 经过
    • table_source(真实表源)
    • is_special_user (或类似的东西)
    • 附加字段1
    • 附加字段2
    • 等等等等等等
  • 每次用户登录时,让它检查这个表并将 table_source 存储在会话中,以供以后使用。

于 2011-03-12T11:52:11.550 回答