我对Spring Security和获取有关当前登录的User
的更多信息(实例变量)有一个快速问题。默认情况下,无需编写自己的UserDetailsService
是否可以获取在User
bean中定义的任何其他实例变量的方法?您可能已经知道,通过将以下代码放在我的一个控制器中,我可以访问以下字段,例如:用户名,密码,已启用,授权等。
UserDetails userDetails =
(UserDetails) ((Authentication)principal).getPrincipal();
我想获取其他信息,例如我在User对象(ID,NAME,EMAIL,ETC)中定义的以下实例变量:
// Instance Variables
private int id;
private String name;
private String email;
private String username; // I can already obtain this
private String password; // I can already obtain this
您能否以我可以获得更多信息的方式提供进一步的帮助?
最佳答案
如您所知,您可以使用以下代码获取UserDetails
对象。
UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
使用UserDetails对象,您可以获得用户名,密码和权限。现在,您需要该用户的ID和电子邮件。在这种情况下,一旦您的用户通过身份验证,就可以进行数据库查询,该查询将按用户名返回用户对象。