我有一个使用Rails作为后端和AngularJS作为前端的Web应用程序,它有一个相当复杂的权限系统,必须相应地隐藏/显示前端的按钮。
例如,想象一下像ebay这样的东西,如果我创建了一个产品,我可以编辑,删除等等。但是有人可以与我共享产品,我也可以编辑,但不能删除。因此,权限由资源计算,而不是使用角色。
我想为每个json对象添加一个“permissions”属性,如:
[{
id: 1,
name: "product 1",
permissions: {
canEdit: true,
canDelete: false
}
},
{
id: 2,
name: "product 2",
permissions: {
canEdit: true,
canDelete: true
}
}]
是否有最佳做法将每个资源权限发送到前端?
为了清楚起见,此权限仅用于显示/隐藏按钮,即使此人更改了前端中的值,后端仍会阻止此资源
答案 0 :(得分:0)
由于在服务器端确定用户可以对每个项目做什么的逻辑,我认为将与这些项目相关的权限传递给客户端是多余的,除非在客户端进行额外的处理 - 基于用户的互动。 在您的情况下,也许您可以根据相关权限返回不同的对象集合,例如可编辑列表和只读列表到客户端,然后根据项目所属的集合呈现操作?