我可以从
org.springframework.web.server.ServerWebExchange
实例检索主体名称。
exchange.getPrincipal().subscribe(principal -> /* do something with it */);
我也可以检索该委托人的角色吗?
java.security.Principal
类(与 UserDetails
不同)仅提供名称字符串 (getName()
)
用例:假设我想编写一个
GatewayFilter
来考虑当前用户的角色并改变交换:
(exchange, chain) -> /* some filtering logic */
将其转换为确实提供检索权限的方法的东西。就我而言,
Principal
实际上是UsernamePasswordAuthenticationToken
,所以这样就可以了:
((UsernamePasswordAuthenticationToken) principal).getAuthorities()