我已经在类下面对REST服务中的用户进行身份验证
Access Control Allow Origin
身份验证工作正常但我希望每次验证失败时都会记录。它现在的工作方式是Spring Security默认返回@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);
}
}
状态。如何在日志中捕获身份验证失败?我尝试了不同的方法但是从未达到代码,因为在返回403
之后没有执行其他代码。我还尝试使用403
块,但这会扰乱流程,我必须对try catch
响应进行编码。我喜欢保留403
状态消息,并且除了在日志中捕获之外,不会运行任何其他代码。
答案 0 :(得分:0)
我是在M. Deinum回复之后实现的。
@Component
public class AuthenticationFailureListener
implements ApplicationListener<AuthenticationFailureBadCredentialsEvent> {
private static final Logger log = LoggerFactory.getLogger(AuthenticationFailureListener.class);
public void onApplicationEvent(AuthenticationFailureBadCredentialsEvent event) {
log.info("Authentication failed for user: " + event.getAuthentication().getPrincipal());
}
}
效果很好。正是在寻找什么。