我正在使用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')
答案 0 :(得分:1)
UserDetails
getUsername
方法返回用于验证用户身份的String。这主要是您在数据存储区中查找以检查用户是否存在的标识符,匹配用于身份验证的密码并加载其授予的角色/权限以检查其授权。如果这是用于身份验证的电子邮件(比如电子邮件/密码的组合),则应返回电子邮件,否则它应返回用于身份验证的标识符。