如何在前端使用后端权限

时间:2017-08-28 16:43:01

标签: ruby-on-rails angularjs rest web-applications permissions

我有一个使用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
    }
}]

是否有最佳做法将每个资源权限发送到前端?

为了清楚起见,此权限仅用于显示/隐藏按钮,即使此人更改了前端中的值,后端仍会阻止此资源

1 个答案:

答案 0 :(得分:0)

由于在服务器端确定用户可以对每个项目做什么的逻辑,我认为将与这些项目相关的权限传递给客户端是多余的,除非在客户端进行额外的处理 - 基于用户的互动。 在您的情况下,也许您可​​以根据相关权限返回不同的对象集合,例如可编辑列表和只读列表到客户端,然后根据项目所属的集合呈现操作?