我正在学习面向对象的设计,因为我通过我的第一个真实的,虽然是个人的项目。
我正处于构建用户对象的阶段。我有4个用户子类型:
所有群组管理员都是群组成员,所有群组成员也将是无关联用户。所以基本上它是一个简单的用户权限层次结构。
话虽如此,我如何针对这些级别设置我班级的架构?有嵌套技术吗?我只是在努力在这里挖出脚手架。我已经写好了我的用例和叙述。
答案 0 :(得分:3)
因此,您正在实施基于角色的访问控制。每个用户都有四个角色之一。因此,用户是一个对象,用户的角色是用户对象中的一个属性。
enum roles {
root_admin,
group_admin,
group_member,
unassociated_user
}
class user {
string id;
roles role;
}
接下来,您需要强制执行允许某些角色的用户执行某些活动的业务规则。
从一个简单的解决方案开始(这总是一个好的政策):
enum activities {
view,
post,
add_comment
}
实现一个函数或类,其作用是说某个角色是否允许某个活动。
class role_based_access_control {
private:
permissions perm;
public:
bool is_permitted(activities a, roles r) {
return perm[r].contain(a);
}
}
然后,在代码中实现不同活动的位置,包括对此函数的调用:
void add_comment_to_page(user u, comment c, page p) {
if (!role_base_access_control.is_permitted(add_comment,u.role))
throw "access_forbidden";
...
}
重要的是将基于角色的访问控制规则保持集中,以便它们可见,易于监控和审核。