【问题标题】:How to use backend permissions in frontend如何在前端使用后端权限
【发布时间】:2018-02-06 00:05:33
【问题描述】:

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

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

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

【问题讨论】:

  • 你不应该在前端处理这样的权限,因为有人可以很容易地修改它......
  • 此权限仅用于显示/隐藏按钮,更改将不允许该人执行任何操作

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


【解决方案1】:

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

【讨论】:

  • 想知道这是否有帮助?
  • 一个端点可以接收用户标识,检查它的权限和使用一组键的响应,这些键具有与所有显示/隐藏组件和特定前端(在本例中为 Angular 组件)相关的布尔值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
相关资源
最近更新 更多