- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Spring Web Flux 设置 Spring Security。我不明白如何手动设置 SecurityContext
与 ReactiveSecurityContextHolder
.你有任何资源或提示吗?
以我编写的这个过滤器为例,它读取 JWT token 并需要手动设置身份验证:
@Slf4j
public class JwtTokenAuthenticationFilter implements WebFilter {
private final JwtAuthenticationConfig config;
private final JwtParser jwtParser = Jwts.parser();
public JwtTokenAuthenticationFilter(JwtAuthenticationConfig config) {
this.config = config;
jwtParser.setSigningKey(config.getSecret().getBytes());
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
String token = exchange.getRequest().getHeaders().getFirst(config.getHeader());
if (token != null && token.startsWith(config.getPrefix() + " ")) {
token = token.replace(config.getPrefix() + " ", "");
try {
Claims claims = jwtParser.parseClaimsJws(token).getBody();
String username = claims.getSubject();
@SuppressWarnings("unchecked")
List<String> authorities = claims.get("authorities", List.class);
if (username != null) {
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(username, null,
authorities.stream().map(SimpleGrantedAuthority::new).collect(Collectors.toList()));
// TODO set authentication into ReactiveSecurityContextHolder
}
} catch (Exception ex) {
log.warn(ex.toString(), ex);
ReactiveSecurityContextHolder.clearContext();
}
}
return chain.filter(exchange);
}
}
最佳答案
我设法通过调用来更新 SecurityContext:
return chain.filter(exchange).subscriberContext(ReactiveSecurityContextHolder.withAuthentication(auth));
关于spring-security - 使用 ReactiveSecurityContextHolder 手动设置身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55498838/
我如何在测试中模拟 ReactiveSecurityContextHolder 以便有可能进入 lambda flatmap ReactiveSecurityContextHolder.getCont
我尝试对用户进行身份验证(它有效)并从上下文中获取用户 token ,但它不起作用。 我有一个简单的微服务应用程序作为我的宠物项目,并使用 WebFlux 作为网络框架。我尝试调试 ReactiveS
我正在尝试使用 Spring Web Flux 设置 Spring Security。我不明白如何手动设置 SecurityContext与 ReactiveSecurityContextHolder
我正在使用 Kotlin 开发 Spring Boot (2.2) 项目,并使用 CouchDB 作为(响应式(Reactive))数据库,因此使用异步 DAO(挂起函数或返回 Flow 的函数)。我
我正在尝试将 ReactiveSecurityContextHolder 与 Spring WebFlux 一起使用。不幸的是,SecurityContext 是空的: @Configuration
我一直在 Spring Security + Webflux 中使用 ReactiveAuthenticationManager。它被定制为返回 UsernamePasswordAuthenticat
我对reactor很陌生,并且我已经被以下代码困住了很长时间,这些代码对我不起作用,而且我不知道下一步该做什么。 我已简化代码如下: @RestController public class Hell
我是一名优秀的程序员,十分优秀!