如何在Web应用程序中实现用户和组安全性?

时间:2011-09-30 14:39:50

标签: security web-applications

如果重要,请使用php。

如果您创建的网站包含用户和群组。你把它放在网络应用程序中的哪个位置?你只是把函数放在每个页面的顶部(伪):

如果有人在一个小组中,那么他们就可以看到此页面 要么   如果有人在这个组中,他们可以看到这个按钮

这肯定是错的。我不想编辑Web应用程序代码只是为了改变谁可以看到哪些组。我不确定我应该做什么或如何实现这样的事情。

感谢。

2 个答案:

答案 0 :(得分:1)

在MySQL中,我总是创建这4个表:users,user_groups,permissions和user_groups_permissions,它们使用外键链接。

因此,用户A可以位于用户组B中,该用户组权限位于user_groups_permissions中。

现在,我只对这4个表(或更好,3个:用户,user_groups_permissions和权限)进行INNER JOIN,结果是用户拥有的权限。我们所需要的只是通过INNER JOIN选择permissions.key

现在,在处理请求之前,我需要检查Client :: has_permissin('send_post')是否返回true。更好的是,还要在每个与用户组相关的功能之上。

注意:客户端是一个类,它在处理请求之前只加载一次所有用户权限,然后将该权限用于整个请求生命周期,而无需在该请求中多次访问数据库。对此类使用静态方法和$ permissions属性,因此您永远不需要在应用程序类/方法/函数上发送它的对象:)

答案 1 :(得分:0)

您可以使用实用程序函数来获取用户ID和组代码并返回true或false。 您可以在每个页面的顶部将该实用程序功能用作伪,并且同样的功能也可用于隐藏或显示页面中的部分。

如果您的Web应用程序位于MVC中,请在控制器中嵌入用户授权逻辑。