Skip to content

MVC 资源描述解析器

授权引擎需要知道「当前请求访问的是哪个业务资源」。解析器把 HttpServletRequest + HandlerMethod 翻译成 ResourceDescriptor,由宿主把业务资源映射到 IAM 的资源模型。

Optional<ResourceDescriptor> resolve(HttpServletRequest request,
HandlerMethod handlerMethod);
  • 返回 Optional<ResourceDescriptor>:解析不到业务资源时为空。
  • IAM 不查询文档表。宿主负责把业务主键映射到 ResourceDescriptor,IAM 仅消费结果。

GET /api/documents/1001 经解析器后变为:

ResourceDescriptor(
resourceType = "DOCUMENT",
resourceId = "1001",
parentPath = ["PROJECT:101", "DEPARTMENT:1"],
attributes = {}
)

即文档 1001 属于 PROJECT 101、DEPARTMENT 1。这样引擎可结合 ResourceScope("PROJECT","101",READ) 判定是否在作用域内。

  • 无 resolver → 500 IAM_RESOURCE_RESOLUTION_UNAVAILABLE
  • resolver 返回 empty → 404 IAM_RESOURCE_NOT_FOUND

https://github.com/wbh123/iam/blob/main/muer-spring-boot-autoconfigure/src/main/java/io/github/muer/autoconfigure/web/MvcResourceDescriptorResolver.java