javascript - 基于 REST API 权限呈现 HTML

标签 javascript html rest api vue.js

我有一个带有 REST API 的客户端渲染前端。前端应根据用户授权呈现一些元素。示例权限可能是

  • 删除用户
  • 也可以删除主管
  • 创建用户
  • 将用户添加到工作流
  • ...

  • 大量权限由管理员管理。我的问题是:

    您如何知道您对此渲染页面拥有哪些权限以及要渲染什么?

    我想到的唯一想法是创建一个 API 端点 /user/:id/permissions并要求用户拥有的所有权限。一个示例响应对象可能是
    [
      {
        "permissionId": 0,
        "description": "Has access to page"
      },
      {
        "permissionId": 1,
        "description": "Can create users"
      },
      {
        "permissionId": 2,
        "description": "Can delete users"
      }
      // ...
    ]
    

    然后我可以根据这些权限开始渲染我的 HTML(伪代码/我通常使用 VueJs)
    <button render-if="permissions.contains(1)">This shows up if the user can create users</button>
    <button render-if="permissions.contains(2)">This shows up if the user can delete other users</button>
    

    我认为前端代码可能会有点乱。 API 端点应该没问题,但也许有更好的解决方案。是否已经存在最佳实践解决方案?

    最佳答案

    您的方法(具有单独的权限端点)是处理此问题的好方法。

    另一种选择是使用 HAL 或 Siren 等超媒体格式。每当您访问任何资源时,该资源都会包含一个链接列表,其中包含有关用户下一步可能想要做什么的信息。如果链接未出现在响应中,则暗示用户无法执行该操作(由于权限问题或其他原因)。

    关于javascript - 基于 REST API 权限呈现 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559081/

    相关文章:

    html - 如何在 css 文件中使用 header

    html - 我应该编写 Polyglot HTML5 文档吗?

    rest - 如何为同一个 Azure blob 生成多个临时访问 URL?

    具有 RESTful JSON 服务、HTML5 和 jQuery ajax 的 Java Web 框架

    javascript - 搜索机器人或垃圾邮件机器人是否能够模拟/触发 JavaScript 事件?

    javascript - 在 forEach 上通过引用传递

    javascript - 获取多个 div 之间的距离(水平距离,即左边界到右边界 - 以像素为单位)

    javascript - 如何从 Firefox 中的 'drag' 事件获取鼠标位置

    javascript - 弹出窗口中的 Django 渲染模板

    javascript - 将 OAuth token 传递给 JavaScript 客户端的安全方式