springsecurity中的问题
我在UserDetailsServiceImpl中的loadUserByUsername方法中抛出了异常,但是到失败处理器中捕获到的异常并不是我抛出的异常,代码是这样的
UserDetailsServiceImpl.java
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
LoginDto member = memberMapper.getMemberByUsername(username);
if (ObjectUtil.isEmpty(member)) {
throw new UsernameNotFoundException(ResultEnum.userNotExist.getMessage());
}
if (!Objects.equals(member.getStatus(), StatusCode.status.getCode())) {
throw new UsernameNotFoundException(ResultEnum.accountBanned.getMessage());
}
return new CustomUser(member, Collections.emptyList());
}
失败处理器
@Override
protected void unsuccessfulAuthentication(HttpServletRequest request,HttpServletResponse response,AuthenticationException authenticationException) throws IOException,ServletException {
if (authenticationException.getCause() instanceof RuntimeException) {
ResponseUtil.out(response,new Result(ResultEnum.accessDenied.getCode(),ResultEnum.accessDenied.getMessage()));
} else {
ResponseUtil.out(response,new Result(ResultEnum.accountOrPasswordError.getCode(),ResultEnum.accountOrPasswordError.getMessage()));
}
}