我对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和电子邮件。在这种情况下,一旦您的用户通过身份验证,就可以进行数据库查询,该查询将按用户名返回用户对象。

10-07 19:39
查看更多