使用电子邮件而不是用户名登录Jhipster

时间:2018-10-21 18:03:18

标签: java spring-boot jwt jhipster

我使用Jhipster创建应用。默认情况下,它使用用户名和密码的组合来登录。我想创建电子邮件和密码登录名,以便我可以使用户名不唯一。最好的方法是什么?

我正在使用JWT。

1 个答案:

答案 0 :(得分:1)

默认情况下,登录字段用于将用户登录到应用程序。但是使用JHipster的最新版本(我不确定它是从哪个版本实施的),您可以通过电子邮件登录用户。

在DomainUserDetailsS​​ervice.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版本进行了测试!