MYSQL PHP用户权限
我正在为我们公司制作后端。我想基本上有3个用户组。。。管理员可以访问所有功能,管理员可以访问除管理员任务以外的所有任务,用户的功能最有限 我在研究MySQL是如何处理用户的,它是一个非常好的系统,但在编写类似的代码时似乎有相当大的开销 我想知道是否还有其他人有建议。我想让集团管理充满活力,但我想知道这是否值得,因为我们是一家小公司 我将创建一个类似这样的表。假设GroupID 1是管理员,GroupID 2是用户:MYSQL PHP用户权限,php,mysql,Php,Mysql,我正在为我们公司制作后端。我想基本上有3个用户组。。。管理员可以访问所有功能,管理员可以访问除管理员任务以外的所有任务,用户的功能最有限 我在研究MySQL是如何处理用户的,它是一个非常好的系统,但在编写类似的代码时似乎有相当大的开销 我想知道是否还有其他人有建议。我想让集团管理充满活力,但我想知道这是否值得,因为我们是一家小公司 我将创建一个类似这样的表。假设GroupID 1是管理员,GroupID 2是用户: PRIVILEGE GroupID Grant USER_ADD
PRIVILEGE GroupID Grant
USER_ADD 1 "Y"
USER_ADD 2 "N"
EDIT_LISTING 1 "Y"
EDIT_LISTING 2 "Y"
等等。。。
以下是我正在考虑的3个选项:
构建一个用户类,用户在其中登录、实例化类并设置属性。我不喜欢这样,因为每次用户移动时都必须创建一个新实例
将查询结果从privileges中选择*,其中GroupID=:userGroup保存到全局数组
将值保留在$\u会话变量中。这足够安全使用吗?
除非你想从中学习,否则我不会尝试重新发明轮子。您有没有看过,它有自己的and-模块?这就是我处理这种情况的方式 创建包含所有用户信息(包括权限/组)的用户类 当用户登录时,将其用户对象另存为会话变量,并在整个站点中引用该会话变量。 创建页面,使其仅显示当前用户权限级别允许的选项/功能。 例如:
<?php
$Me = new User(user parameters);
$_SESSION['currentUser'] = $Me;
...
if($_SESSION['currentUser']->GetValue(Permission) == 'Admin')
{
echo 'You're an admin';
}
?>
这样,除非用户更改/更新其信息,否则您只能执行一次用户查询。您也不必进行与权限相关的查询,这样可以节省服务器开销和时间。当我这样做时,我会在会话中使用用户id\name来保持用户级别。@Dagon,谢谢,如果zend的想法不奏效,我可能会这样做。我更倾向于CodeIgnitor,但我在这个项目中走得很远,我想知道有多少重新做的网站,我将不得不这样做。这个项目的结果比我们预期的更大。我同意你重新发明轮子的观点,但你不必重写所有的东西。Zend Framework模块只是松散耦合的,您可以只使用您真正需要的两个模块,并保留当前主页的其余部分。是的,我刚刚查看了他们的文档。我可能会尝试实现它。。我担心我必须在Zend下运行整个程序,但看起来并不像我想象的那么可怕。我开始构建一个类,但不知道如何在每次有人做某件事时都不询问DB就让它工作。感谢我忽略了这个显而易见的想法!