我使用Jhipster创建应用。默认情况下,它使用用户名和密码的组合来登录。我想创建电子邮件和密码登录名,以便我可以使用户名不唯一。最好的方法是什么?
我正在使用JWT。
答案 0 :(得分:1)
默认情况下,登录字段用于将用户登录到应用程序。但是使用JHipster的最新版本(我不确定它是从哪个版本实施的),您可以通过电子邮件登录用户。
在DomainUserDetailsService.java中:
public UserDetails loadUserByUsername(final String login) {
log.debug("Authenticating {}", login);
if (new EmailValidator().isValid(login, null)) {
return userRepository.findOneWithAuthoritiesByEmail(login)
.map(user -> createSpringSecurityUser(login, user))
.orElseThrow(() -> new UsernameNotFoundException("User with email " + login + " was not found in the database"));
}
String lowercaseLogin = login.toLowerCase(Locale.ENGLISH);
return userRepository.findOneWithAuthoritiesByLogin(lowercaseLogin)
.map(user -> createSpringSecurityUser(lowercaseLogin, user))
.orElseThrow(() -> new UsernameNotFoundException("User " + lowercaseLogin + " was not found in the database"));
}
但是登录名仍然是唯一的,因为邮件是,名字和姓氏不是。即使您使用的是旧版本的JHipster,我也可以肯定您可以添加此代码以支持电子邮件和登录身份验证。
通过JWT和最新的JHipster版本进行了测试!