Class SecurityAttributeAnalyzer
java.lang.Object
cn.herodotus.engine.oauth2.authorization.processor.SecurityAttributeAnalyzer
Description: SecurityMetadata异步处理Service
- Author:
- : gengwei.zheng
- Date:
- : 2021/8/1 17:43
-
Constructor Summary
ConstructorsConstructorDescriptionSecurityAttributeAnalyzer(SecurityAttributeStorage securityAttributeStorage, ServletOAuth2ResourceMatcherConfigurer servletOAuth2ResourceMatcherConfigurer) -
Method Summary
Modifier and TypeMethodDescriptionvoidprocessAttributeTransmitters(List<cn.herodotus.engine.core.identity.domain.AttributeTransmitter> attributeTransmitters) 处理分发的 SecurityAttribute,将其转换、解析为表达式权限,并存入本地缓存,用于权限校验void各个服务静态化配置的权限过滤,通常为通配符型或者全路径型,很少有站位符型。
-
Constructor Details
-
SecurityAttributeAnalyzer
public SecurityAttributeAnalyzer(SecurityAttributeStorage securityAttributeStorage, ServletOAuth2ResourceMatcherConfigurer servletOAuth2ResourceMatcherConfigurer)
-
-
Method Details
-
processRequestMatchers
public void processRequestMatchers()各个服务静态化配置的权限过滤,通常为通配符型或者全路径型,很少有站位符型。即:大多数情况为Category.WILDCARD和Category.PLACEHOLDER,很少有Category.FULL_PATH此处的逻辑是: 1. 先处理各个服务静态化配置的权限,当前假设不会有
Category.FULL_PATH类型的权限。后期如果该种权限较多再补充即可。 同时,静态服务都是开发人员手工配置,假定手工配置时就会对是否冲突进行处理,当然也可能出现冲突,那么这个开发人员得多不负责。 2. 经过考虑,服务本地接口扫描完,就对所有的 RequestMapping 做一遍解析,现在感觉意义不大。 因为,RequestMapping 汇总至 UPMS 后,还会做一次统一的分发。所以当前的设计思路是不对 RequestMapping 进行处理。后续根据需要再补充即可。 -
processAttributeTransmitters
public void processAttributeTransmitters(List<cn.herodotus.engine.core.identity.domain.AttributeTransmitter> attributeTransmitters) 处理分发的 SecurityAttribute,将其转换、解析为表达式权限,并存入本地缓存,用于权限校验处理过程中,会根据规则对权限类型分组,然后进行去重的操作。
- Parameters:
attributeTransmitters- 权限数据
-