在codeigniter中管理组权限

时间:2013-10-29 07:28:20

标签: php mysql codeigniter

我知道这个问题已被多次提出,但我正在学习编写更好的代码。需要一些建议。

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

: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字段可能包含诸如“company / add”,“service / add”,“company / view”等等的值。

我有一个自动加载的库类,因为User有一个方法check_permission(),这个方法已在MY_Controller构造函数上调用。

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

1 个答案:

答案 0 :(得分:1)

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

此外,您无需在MY_Controller的构造函数中进行数据库查询(如果您是的话)。当用户登录时,您可以将他的权限/组值保存在Session中,并继续使用它以供进一步参考。这将保存您的查询:)