jhipster 身份验证登录邮箱

jhipster authentication login with email

我正在寻找一种使用 email / password 作为身份验证的方法,而不是默认的 login(用户名) / 密码.

我正在使用 spring 安全性 oauth2。

这可能吗?我确实允许为用户更改电子邮件。

Google 不是我的朋友。

我的代码也没有被破解: 将相同的电子邮件放入登录列时,我收到身份验证错误

在'com.example.myjhipster.security.UserDetailsService'

中找到了('mine')解
    @Override
    @Transactional
    public UserDetails loadUserByUsername(final String login) {
        log.debug("Authenticating {}", login);

        String lowercaseLogin = login.toLowerCase();
//        Optional<User> userFromDatabase =  userRepository.findOneByLogin(login);
        Optional<User> userFromDatabase =  userRepository.findOneByEmail(login);
        return userFromDatabase.map(user -> {
            if (!user.getVerified()) {
                throw new UserNotActivatedException("User " + lowercaseLogin + " was not activated");
            }

            List<GrantedAuthority> grantedAuthorities = user.getAuthorities().stream()
                    .map(authority -> new SimpleGrantedAuthority(authority.getName()))
                    .collect(Collectors.toList());
//            return new org.springframework.security.core.userdetails.User(lowercaseLogin,
            return new org.springframework.security.core.userdetails.User(user.getLogin(),
                    user.getPassword(),
                    grantedAuthorities);
        }).orElseThrow(() -> new UsernameNotFoundException("User " + lowercaseLogin + " was not found in the database"));
    }

这可能有点太晚了,但这里有一个可以理解登录和电子邮件的解决方案。

@Override
@Transactional
public UserDetails loadUserByUsername(final String login) {
    log.debug("Authenticating {}", login);
    String lowercaseLogin = login.toLowerCase(Locale.ENGLISH);

   User user = userRepository.findOneByLogin(lowercaseLogin)
           .map(Optional::of)
           .orElse(userRepository.findOneByEmail(lowercaseLogin))
           .orElseThrow(() -> new UsernameNotFoundException("User " + lowercaseLogin + " was not found in the " + "database"));

   if (!user.getActivated()) {
       throw new UserNotActivatedException("User " + lowercaseLogin + " was not activated");
   }

   List<GrantedAuthority> grantedAuthorities = getGrantedAuthorities(user);

   return new org.springframework.security.core.userdetails.User(user.getLogin(),
          user.getPassword(),
          grantedAuthorities);

}

private List<GrantedAuthority> getGrantedAuthorities(User user) {
    return user.getAuthorities().stream()
            .map(authority -> new SimpleGrantedAuthority(authority.getName()))
        .collect(Collectors.toList());
}