对于我的REST应用程序,我使用了基本身份验证(发送用户密码并在每次请求时登录)。对于某些需求,我使用以下方式获取登录用户:
User loggedUser = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
但后来我实现了Spring-Security-Oauth2,我使用访问令牌代替密码和登录。现在.getPrincipal()方法返回“anonymousUser”。 所以我的问题是:有没有办法在spring-security-oauth中以某种方式获取登录用户?
修改 我发现我的安全“intercept-url模式”中存在问题。所以现在我可以使用SecurityContextHolder从中获取经过身份验证的用户。
答案 0 :(得分:1)
在控制器内部方法中,您可以添加此参数,然后为您注入,您可以访问用户信息
getUserAuthentication(OAuth2Authentication auth,Model model)