我正在使用Spring 5 Oauth2。 我可以看到当前有效的令牌。
Collection<OAuth2AccessToken> tokens = tokenStore.findTokensByClientId("clientIdPassword");
if (tokens != null) {
for (OAuth2AccessToken token : tokens) {
tokenValues.add(token.getValue());
}
}
上面的代码块显示了客户端ID为clientIdPassword
的有效令牌,但我想只获取当前记录的用户对象。我试过了Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
,但它返回了匿名用户。有没有办法获得唯一当前记录的用户对象?
答案 0 :(得分:0)
通常,您的代码是获取当前登录用户对象的正确方法。
如果您想查找其他方式,请参阅此处:http://www.baeldung.com/get-user-in-spring-security
答案 1 :(得分:0)
在您的令牌服务中,您可以添加OAuth2Authentication类作为参数
@RequestMapping(method = RequestMethod.POST, value = "/oauth/token/revokeById/{tokenId}")
@ResponseBody
public void revokeToken(HttpServletRequest request, @PathVariable String tokenId,OAuth2Authentication auth) {
Springboot会自动将登录的用户详细信息映射到此对象。现在,您可以执行以下操作来访问用户名
auth.getPrincipal().toString()