我对您的意见感兴趣:目前我的数据库中只有一个用户表,但我想添加一个新的用户表来管理帐户。
Pro:我不必检查“角色”表来验证尝试登录的用户。
Con:管理员帐户不能成为社区的一部分,仅用于后端。如果你把某人推荐给主持人,那就太多了:他不能用他的公共账户写帖子。
我目前要检查的解决方案,如果用户是队友(伪代码):
$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”等权利......
我目前的解决方案并不完美,所以请帮我剥皮我的数据库! :)
答案 0 :(得分:1)
你能不能只用一个带有is_admin和is_moderator布尔变量的用户表。然后,当您想要查找团队中的人时,您只需要查看一个表。 我不会考虑将它们分开,除非你真的希望它们是另一种用户,而不仅仅是具有管理员或管理员权限的用户。
答案 1 :(得分: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 |
..+---------+-----------+-----------+
干杯。