我有一个包含以下字段的数据库:
- ID
- 名
- 姓
- 电子邮件
- 电话
- 地址
- 信息
- ...
为简单起见,假设我有三个用户组——用户、超级用户和管理员。
我寻找最好的设计(开发基于 PHP 的应用程序,基于 CodeIgniter),允许管理员为不同的用户组定义视野(用户组 A 应该有权访问字段 X、Y、Z),以及用户自己必须能够选择要查看的字段(从他的组中允许)。
这应该发生在后端,而不是前端..
有什么指导吗?
问候,克里斯
我有一个包含以下字段的数据库:
为简单起见,假设我有三个用户组——用户、超级用户和管理员。
我寻找最好的设计(开发基于 PHP 的应用程序,基于 CodeIgniter),允许管理员为不同的用户组定义视野(用户组 A 应该有权访问字段 X、Y、Z),以及用户自己必须能够选择要查看的字段(从他的组中允许)。
这应该发生在后端,而不是前端..
有什么指导吗?
问候,克里斯
可能您会找到解决该问题的几种方法。这取决于需求以及功能在模块中的公开和分布方式。
在我的例子中,访问控制是在控制器的基础上给出的,所以我定义了可以检查构造函数中访问的抽象控制器,pe:
class User_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->auth->is_logged_in() || RedirectToLogin();
}
}
class SuperUser_Controller extends User_Controller {
public function __construct()
{
parent::__construct();
$this->auth->is_superuser() || RedirectToBadUser();
}
}
class Admin_Controller extends User_Controller {
public function __construct()
{
parent::__construct();
$this->auth->is_admin() || RedirectToBadUser();
}
}
您应该根据您的规格解决 is_logged_in、is_superuser() 和 is_admin(),然后根据所需级别使您的控制器基于其中之一。
无论如何,没有什么能阻止你$this->auth->is_superuser() || RedirectToBadUser();
在方法内部添加一个,提供你需要的粒度。