【发布时间】:2019-05-05 18:55:07
【问题描述】:
Mu 认证服务是
@Service
public class UserDetailsServiceImpl implements UserDetailsService {
@Autowired
UserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException, ResourceNotFoundException {
Optional<User> optionalUser = userRepository.findByUsername(s);
if (optionalUser.isPresent()) {
User user = optionalUser.get();
if (!user.isActive()) {
throw new UsernameNotFoundException("User is not active.");
}
List<SimpleGrantedAuthority> grantedAuthorities = new ArrayList<>();
grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_USER"));
if (user.isKeyUser()) grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_KEYUSER"));
if (user.isAdmin()) grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
UserDetails userDetails = new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), grantedAuthorities);
return userDetails;
}
else {
throw new UsernameNotFoundException("User not found");
}
}
}
但是当我尝试使用错误的凭据或用户未激活登录时,我收到了这个一般错误(我正在使用 React + Axios):
data: {error: "invalid_grant", error_description: "Bad credentials"}
相反,我想要具体的错误:“用户未激活。”或“找不到用户"
我怎样才能达到这个结果?
【问题讨论】:
-
只是一个意见:您应该返回“错误的凭据”或更好的“用户和密码的错误组合”。不要暴露用户未找到或未激活的信息。您可以将其用于日志记录,但最终用户应该不知道他是否尝试为现有用户进行组合...
标签: java spring authentication