0

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

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

: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”等值。

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

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

4

1 回答 1

1

根据我的观点,将每个用户的组权限保存在数据库中并拥有一个权限映射表总是好的。这样将来您就可以在不触摸代码的情况下升级或降级用户的权限(从管理面板)

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

于 2013-10-29T08:31:30.467 回答