我正在使用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')

最佳答案

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

09-05 00:23