权限校验会调用 DelegatingReactiveAuthorizationManager -> check方法。DelegatingReactiveAuthorizationManager 里的mappings保存的是pathMatcher和对应的权限。
思路是拿到mappings,每次清空再重新添加。
把ServerHttpSecurity里的authorizeExchangeSpec替换为自定义的,authorizeExchangeSpec的configure方法里创建AuthorizationWebFilter的时候,将自定义mappings传入,替换默认的。
// 路径,权限对应关系
List<ServerWebExchangeMatcherEntry<ReactiveAuthorizationManager<AuthorizationContext>>> mappings = new CopyOnWriteArrayList<>();
@Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) throws Exception {
mappings.add(new ServerWebExchangeMatcherEntry(ServerWebExchangeMatchers.pathMatchers("/user/list"),
AuthorityReactiveAuthorizationManager.hasAnyRole("admin")));
ServerHttpSecurity.AuthorizeExchangeSpec exchangeSpec = http.new AuthorizeExchangeSpec();
Enhancer enhancer = new Enhancer();
enhancer.s

本文介绍了一种通过替换Spring Security中的ServerHttpSecurity.AuthorizeExchangeSpec来实现自定义权限管理的方法。具体做法是创建自定义的映射关系,并将其传递给AuthorizationWebFilter以覆盖默认配置。
最低0.47元/天 解锁文章
2824

被折叠的 条评论
为什么被折叠?



