【发布时间】:2019-08-09 08:28:05
【问题描述】:
我想就权限系统架构征求您的意见。 我将 Web UI 作为单独的前端项目,将 API 作为后端。
API 方面的权限为每个控制器/操作定义为符合数字的某个枚举,当我想创建某个角色时 - 我分配一组代表权限的枚举数字并将它们放入 JWT 令牌中.稍后,授权客户端在标头(承载令牌)中发送 JWT 令牌,并且当 API 将调用某些操作时 - 它检查 JWT 令牌是否包含标记此控制器/操作的枚举值(数字)。在这一边,它很容易工作。这里的好处是,在授权期间,我们只是根据角色从数据库中获取一组“数字”,并在访问本身期间过滤访问 - 所以它工作得很快。
我正在考虑以下 UI 逻辑 - 用户在 UI 端填写登录名/密码。 UI 向 API 发送凭据,API 对用户进行身份验证,收集权限子集 + 一些附加数据并将其加密为 JWT 令牌 - UI 获取此令牌并将其封装在发送给客户端的 cookie 中(可能是 + 一些自己的信息)。因此,每次客户端访问任何 UI 页面时,它都会向 UI 发送 cookie,并且 UI 从 cookie 中获取 JWT 令牌发出 API 请求。
但是,在这种情况下,JWT 令牌是加密的,UI 无法知道里面的数据。而且,即使它可以看到数据 - 它也不会提供任何信息,并且知道 API 端的动态角色集不会为 UI 端提供任何信息。以及仅在 API 端实时转换为权限的编码“数字”。
问题是 webUI 应该如何知道它是否应该为某个用户呈现对管理页面的访问权限。或显示其他 UI 选项等。
我认为这个问题可能是微不足道的,因为很多系统都被拆分为 UI + 后端。但是无论如何,我还没有找到任何好的设计解释。
希望在这里得到社区的建议。感谢您的想法。
【问题讨论】:
标签: api user-interface architecture permissions frontend