在Spring Boot中,在RESTful API上记录失败的授权尝试的最佳方法是什么,即在下面,如果用户没有admin角色,默认情况下Spring不会记录访问此方法的失败尝试:
@PreAuthorize("hasAuthority('admin')")
@RequestMapping(value = "/getVersion", method = RequestMethod.GET)
public ResponseEntity<?> printVersion() {
logger.info("Received get request for version");
return new ResponseEntity<String>(applicationDetails.getAppVersion(), HttpStatus.OK);
}
我尝试使用ApplicationListener<AuthorizedEvent>
,虽然类似的方法适用于ApplicationListener<AbstractAuthenticationEvent>
,但它似乎不适用于AuthorizedEvents
。
答案 0 :(得分:1)
您使用了错误的事件,请参阅AuthorizationFailureEvent
:
表示安全对象调用失败,因为无法为该请求授权主体。
由于
AccessDecisionManager
或AfterInvocationManager
,可能会抛出此事件。