ruby-on-rails - 如何在前端使用后端权限

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

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

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

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

[{
    id: 1,
    name: "product 1",
    permissions: {
        canEdit: true,
        canDelete: false
    }
},
{
    id: 2,
    name: "product 2",
    permissions: {
        canEdit: true,
        canDelete: true
    }
}]

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

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

最佳答案

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

关于ruby-on-rails - 如何在前端使用后端权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45923750/

相关文章:

javascript - 导出到 csv 时忽略 JSON 字符串中的逗号

rest - 使用 POST 创建请求,响应代码 200 或 201 和内容

ruby-on-rails - Heroku 正在为 Rails 5 应用程序提供旧 Assets

mysql - 如何安装 Rails MySQL 适配器?

javascript - UI-router 空参数导致导航到错误的路线

java - @Post Jersey 在带有 javax.ws.rs.POST 注释的方法中只允许有一个未注释的参数

java - 如何通过 REST (JAX-RS) 在 web.xml 中声明多个包?

mysql - 表单标签和查询

ruby-on-rails - 向 Rails 中的所有表单添加隐藏输入字段

javascript - 带刷新和不带刷新的 Angularjs 表单