如何检查当前用户对某文档是否拥有特定权限?

Viewed 1

我在下载或修改文件前想先判断当前用户有没有 downloadmodify 权限,避免直接调用业务接口报错。应该用哪个接口?返回值怎么判断?

1 Answers

使用 POST /api/eacp/v1/perm1/check(检查单个权限,支持用户账户与应用账户)。

请求体(Perm1CheckReq,必填 docidperm):

字段 说明
docid 文档 gns。
perm 待检查的权限,枚举:display(显示)、preview(预览)、download(下载)、create(新建)、modify(修改)、delete(删除)、cache(缓存)。

请求示例:

POST /api/eacp/v1/perm1/check HTTP/1.1
Host: 192.168.1.100
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json

{
  "docid": "gns://DED18AD77A2849509DB0A7F6BAA58926",
  "perm": "download"
}

响应示例(Perm1CheckRes):

{
  "result": 1,
  "error": {
    "code": 403001002,
    "cause": "没有配置权限",
    "message": ""
  }
}

result 含义:

  • 0:OK,拥有该权限;
  • 1:未配置该权限;
  • 2:拒绝该权限(被 deny)。

result 非 0 时,error 字段给出权限不足的原因。若需一次性检查多个权限或查看各访问者的最终权限,可改用 perm1/checkall(检查所有权限)与 perm1/list(展示各访问者最终权限)。