我知道这个问题已被多次提出,但我正在学习编写更好的代码。需要一些建议。
假设我有一个控制器和方法,如下所示:
: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构造函数上调用。
所以我的问题是,将控制器/功能映射到数据库字段以允许访问是一种好习惯吗?或者你还有其他比这更有效的选择吗?
答案 0 :(得分:1)
根据我的观点,在DB&中保存每个用户的组权限总是好的。有一个权限映射表。因此,将来您可以升级或降级用户的权限,而无需触及代码(来自管理面板)
此外,您无需在MY_Controller
的构造函数中进行数据库查询(如果您是的话)。当用户登录时,您可以将他的权限/组值保存在Session
中,并继续使用它以供进一步参考。这将保存您的查询:)