问题
我试图找到一种很好的方法来构建我的api网关的权限,以便从外部软件访问 .
上下文
在我目前的公司,我们有一个API网关 .
当用户登录时,我们将所有用户权限发送到前端服务,并为当前用户生成所有菜单和屏幕以及允许访问的内容 .
例:
{
user: joe,
permissions: [
'fancyMenu',
'anotherFancyMenu'
]
}
这种方法非常有效,但是现在我们需要将API暴露给其他客户端,他们将直接访问我们的 endpoints .
问题
因此,以前访问fancyStuff菜单的用户需要访问 endpoints x,y,z才能完成操作 . 每个 endpoints 都必须检查记录的用户是否具有fancyStuff权限 . 现在我们需要将API公开给其他软件 .
在此示例中,权限fancyMenu需要访问这3个不同的 endpoints 才能完成操作 . 获得一些东西和花哨的硬币来创造一个新的奇特的操作 .
fancyMenu -> POST /fancy
fancyMenu -> GET /coins/fancy
fancyMenu -> GET /stuff
解决方案
话虽这么说,我们在api网关上创建了一个新类,并将所有菜单权限映射到所需的 endpoints .
一个例子是我们的菜单fancyMenu现在有一个列出所有功能所需的所有 endpoints ,我们在所有 endpoints 上检查这个新类 .
我不确定这是否是解决问题的正确方法,但我找不到更好的方法 .