0

我对您的意见很感兴趣:目前我的数据库中只有一个用户表,但我考虑添加一个新的用户表来将公共帐户与管理员帐户分开。

Pro:我不必检查“角色”表来验证尝试登录的用户。

缺点:管理员帐户不能成为社区的一部分,仅用于后端。如果您将某人提升为版主,那就太多了:他不能用他的公共帐户写帖子。

我目前检查用户是否是队友(伪代码)的解决方案:

$needed_role = "admin";
if ($User->is_in_team($user_id)) { // SELECT id FROM user WHERE team=1 AND user_id=$user_id
    $roles = $User->getRoles($user_id);
    if (in_array($needed_role, $roles)) {
        // login...
    }
}

这是一个简单的例子。角色被划分为“blog_post_write”、“blog_post_delete”等权限。

我目前的解决方案并不完美,所以请帮我拉皮条我的数据库!:)

4

2 回答 2

1

你能不能简单地拥有一个带有 is_admin 和 is_moderator 布尔变量的用户表。然后,当您要查找团队中的人员时,您只需查看一张表即可。除非您真的希望他们成为不同类型的用户,而不仅仅是具有管理员或版主权限的用户,否则我不会考虑将它们分开。

于 2012-11-02T01:34:43.647 回答
1

有什么特殊的理由有单独的表格吗?也许更多额外的领域?必须检查其他表作为安全措施?

..+---------+-----------+-----------+-------------+
..|             User                              |
..+---------+-----------+-----------+-------------+
..| UserID  | UserAlias | UserPwd   | UserIsAdmin |
..+---------+-----------+-----------+-------------+
..| 87      | johndoe   | sdsd<ds33 | false       |
..+---------+-----------+-----------+-------------+
..| 88      | janesmith | sd456656h | true        |
..+---------+-----------+-----------+-------------+
..| 89      | annethmps | s34ddd545 | true        |
..+---------+-----------+-----------+-------------+
..| 90      | mikekane  | s34ddd545 | false       |
..+---------+-----------+-----------+-------------+

..+---------+-----------+-----------+
..|             Admin               |
..+---------+-----------+-----------+
..| UserID  | Extra1    | Extra2    |
..+---------+-----------+-----------+
..| 88      | sdfsds3   | s2323h    |
..+---------+-----------+-----------+
..| 89      | sdsds2    | s3ghgh5   |
..+---------+-----------+-----------+

干杯。

于 2012-11-02T01:45:14.000 回答