Php 在codeigniter中管理组权限

Php 在codeigniter中管理组权限,php,mysql,codeigniter,Php,Mysql,Codeigniter,我知道这个问题已经被问过很多次了,但我正在学习编写更好的代码。所以我需要一些建议 假设我有一个控制器和方法,如下所示: :Account login(); home(); manage_user(); logout(); :Company add(); view(); edit(); delete(); :Service add(); delete(); :Page default(); about_us(); contact_us(); 有三种类型的用户组(例如系统管理员、公司用户和普

我知道这个问题已经被问过很多次了,但我正在学习编写更好的代码。所以我需要一些建议

假设我有一个控制器和方法,如下所示:

:Account
login();
home();
manage_user();
logout();

:Company
add();
view();
edit();
delete();

:Service
add();
delete();

:Page
default();
about_us();
contact_us();
有三种类型的用户组(例如系统管理员、公司用户和普通用户),我需要为它们指定访问这些方法/页面的权限

我有一个数据库结构

group(id, name);
user(id, parent_id, group_id, company_id, username, password, email);
permission(id, group_id, uri, allowed);
uri字段可能包含“公司/添加”、“服务/添加”、“公司/视图”等值。。。等等

我有一个自动加载的库类,用户有一个方法check\u permission(),该方法已在我的\u控制器构造函数上调用


所以我的问题是,将控制器/函数映射到数据库字段以允许访问是一种好的做法吗?或者你还有其他比这更有效的选择吗

根据我的意见,在数据库中保存每个用户的组权限总是好的&有一个权限映射表。因此,将来您可以升级或降级用户权限,而无需触摸代码(从管理面板)

此外,您不需要在
MY_Controller
的构造函数中进行DB查询(如果需要的话)。当用户登录时,您可以将其权限/组值保存在
会话中
,并继续使用该值以供进一步参考。这将保存您的查询:)