如何在前端使用后端权限

Man*_*yol 5 permissions rest web-applications ruby-on-rails angularjs

我有一个使用 Rails 作为后端和 AngularJS 作为前端的 Web 应用程序,它有一个相当复杂的权限系统,必须相应地在前端隐藏/显示按钮。

例如,想象像 ebay 这样的东西,如果我创建了一个产品,我可以编辑、删除等。但是有人可以与我共享一个产品,我也可以编辑,但不能删除。所以权限是按资源计算的,不使用角色。

我想为每个 json 对象添加一个“权限”属性,例如:

[{
    id: 1,
    name: "product 1",
    permissions: {
        canEdit: true,
        canDelete: false
    }
},
{
    id: 2,
    name: "product 2",
    permissions: {
        canEdit: true,
        canDelete: true
    }
}]
Run Code Online (Sandbox Code Playgroud)

是否有将每个资源权限发送到前端的最佳实践?

需要说明的是,此权限仅用于显示/隐藏按钮,即使此人更改了前端的值,后端仍会阻止此资源

小智 0

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