我遇到设计问题。我想实现一个ACL系统,但是想避开我需要对数据模型中的每个属性设置一组前提条件的实现。例如,如果我的数据模型如下所示:
{
person:
name: {
_acl: {read:['user','admin'],write:['admin'],publish:
['user','admin']},
value:'somename'
},
age: {
_acl: {read:['user','admin'],write:['admin','user'],publish:
['user','admin']},
value:'somename'
}
}
我立即看到角色用户可以更改人员的属性名称,但不能更改年龄。因此,通过这种方式,我可以创建一个可由用户购买的对象,只需购买_acl属性即可,然后将其发送到客户端(角度)应用即可。问题在于,每次我更改数据模型或更改角色时,都需要更改_acl属性。有更好的方法吗?