所以你正在实施基于角色的访问控制。每个用户都有四个角色之一。所以用户是一个对象,用户的角色是用户对象中的一个属性。
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";
...
}
重要的是要保持集中,这样的基于角色的访问控制规则,他们可见,易于监视和审计。
在这种情况下,您应该考虑使用组合而不是子类型/继承。 – Rahul
我正在阅读有关作文,并发现PHP只接受一位家长。有没有解决的办法? – Dexter
我误解了我正在阅读的内容。对我来说太复杂了。为了我的目的,这可能会起作用。但是我正在阅读一篇关于为什么写作很糟糕的文章,我想我正在学习一些复杂的方法论,但没有准备好大声笑......我想从一开始就学会正确,但是我越过了我的头。 – Dexter