try { user retrieveUser(username, (UsernamePasswordAuthenticationToken) authentication); } catch (UsernameNotFoundException notFound) { logger.debug("User " username " not found"); if (hideUserNotFoundExceptions) { throw new BadCredentialsException(messages.getMessage( "AbstractUserDetailsAuthenticationProvider.badCredentials", "Bad credentials")); } else { throw notFound; } } 这里有个hideUserNotFoundExceptions属性默认是true。这样的话即便我们抛出了UsernameNotFoundException它也会转为BadCredentialsException所以我们需要将hideUserNotFoundExceptions属性的值设为false 最后必须修改security的配置文件如下
