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());
}
我正在寻找一种使用 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());
}