从SecurityContextHolder spring java MVC获取电子邮件地址

时间:2018-02-18 18:52:50

标签: java spring model-view-controller log4j2

我正在使用log4j框架。我想将登录用户的电子邮件地址插入数据库。我正在使用这个:

UserDetails origUser = (UserDetails)securityContext.getAuthentication().getPrincipal();

该对象具有以下方法:

origUser.getUsername(),
origUser.isEnabled(),
origUser.isAccountNonExpired(),
origUser.isCredentialsNonExpired(),
origUser.isAccountNonLocked(),
origUser.getAuthorities());

但是这些方法都没有返回电子邮件地址。如何检索用户电子邮件信息,以便我可以像以下一样使用它:

MDC.put("username",origUser.getEmail());

log4j.properties有

log4j.appender.DB.sql=INSERT INTO LOGS VALUES('%X{username}','%d{yyyy-MM-dd HH:mm:ss}','%C','%p','%m')

1 个答案:

答案 0 :(得分:1)

UserDetails getUsername方法返回用于验证用户身份的String。这主要是您在数据存储区中查找以检查用户是否存在的标识符,匹配用于身份验证的密码并加载其授予的角色/权限以检查其授权。如果这是用于身份验证的电子邮件(比如电子邮件/密码的组合),则应返回电子邮件,否则它应返回用于身份验证的标识符。

相关问题