-1
我有下面的类来验证用户身份在REST服务捕捉验证失败
@Service
public class AuthenticationService {
private static final Logger log = LoggerFactory.getLogger(AuthenticationService.class);
@Autowired
private AuthenticationManager authenticationManager;
public void getAuthentication(AccountCredentials credentials) {
log.info("Authentication requested for user: " + credentials.getEmail());
final Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(
credentials.getEmail(),
credentials.getPassword()
)
);
SecurityContextHolder.getContext().setAuthentication(authentication);
}
}
身份验证工作正常,但我想记录每一个有一个验证失败的时间。现在它的工作方式是Spring Security默认返回403
状态。如何在日志中捕获身份验证失败?我尝试过不同的方法,但代码从未达到,因为在返回403
之后没有执行其他代码。我也尝试过使用try catch
块,但是这会扰乱流程,我将不得不编码403
响应。我喜欢保留403
状态消息,并且除了在日志中捕获代码之外,不会运行其他代码。
你正在为Spring Security工作,而我建议与它整合,这样你也可以听从Spring Security发出的事件之一[failure events](http://docs.spring.io/spring-security /site/docs/current/apidocs/org/springframework/security/authentication/event/AbstractAuthenticationFailureEvent.html)。 –