2011-09-30 72 views
0

使用PHP,如果有关系。如何在Web应用程序中实现用户和组安全性?

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

如果有人在一组,然后他们就可以看到这个页面 或 如果有人在该组中,他们可以看到这个按钮

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

谢谢。

回答

1

在MySQL中,我始终创建这4个表:用户,user_groups,权限和user_groups_permissions被使用外键链接。

所以,用户A可以在用户组B,其中该用户组的权限是在user_groups_permissions。现在

,我只是做了INNER这个4个表(或更好,三:用户,user_groups_permissions和权限)加入,结果是权限的用户拥有。我们需要的是通过INNER JOIN选择permissions.key

现在,处理请求之前,我需要检查客户端:: has_permissin(“send_post”)返回真还是假。更好的是,每个用户组相关的功能也是最重要的。

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

+0

其实,我设计我的应用程序架构更加复杂,我就与动态蛞蝓(那所有页面什么WordPress的称呼它,我也称它为slu,,但我从来没有使用Wordpress),然后,我通过在整个应用程序中调用Client :: has_page_access()来检查页面访问权限,所以我从不需要检查权限为每个页面。但Client :: has_permission($ key)仍然在受限制的函数上调用。此外,没有直接访问页面,所有的url都被重定向到index.php并从那里进行处理。 – user5483434

0

你可以有一个实用功能,它接受用户ID和组代码并返回true或false。 您可以在每个页面的顶部将该实用程序功能用作伪代码,并且还可以使用相同的功能在页面中隐藏或显示部分。

如果你的Web应用程序是MVC中,在你的控制器嵌入用户授权的逻辑。