前端如何实现ABAC权限控制?

上官保霞 阅读 4

我在做后台管理系统,想用ABAC模型做细粒度权限控制,但不确定前端该怎么配合。后端返回的策略是 JSON 格式,比如:

{
  "role": "editor",
  "resource": "article",
  "action": "update",
  "conditions": {
    "ownerId": "currentUserId"
  }
}

现在的问题是:我该在组件里直接写判断逻辑,还是封装一个权限检查函数?试过用 canUserDo('update', 'article') 这种方式,但条件里的 ownerId 怎么动态传进去啊?感觉越写越乱。

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
极客慧研
搞ABAC确实烦...建议封装个函数,把当前用户ID也传进去。差不多这样:

function checkPermission(userId, action, resource, policy) {
return policy.action === action
&& policy.resource === resource
&& (policy.conditions.ownerId ? userId === policy.conditions.ownerId : true);
}


组件里直接用就行,记得把当前用户ID存全局状态里。
点赞
2026-03-08 12:02