当用户登录或输入错误的密码时,Jhispter-Appliction会生成Audit-Events。
我想使用相同的系统在用户更改密码时或管理员用户更改其他用户的数据时生成事件。
我应该如何调用审计系统?
我目前的想法是在changePassword-rest-api-call中调用一个方法,并在此方法中执行与CustomAuditEventRepositoryIntTest.addAuditEvent
Map<String, Object> data = new HashMap<>();
data.put("password-strength", "weak");
AuditEvent event = new AuditEvent(
loginUsername,
"PASSWORD_CHANGE",
data);
customAuditEventRepository.add(event);
我是否需要更改CustomAuditEventRepository
或创建自己的版本?或者我只使用PersistenceAuditEventRepository
?
是否有一个特殊的魔术配置,所以自动调用审计,或者我只是在rest-api方法中调用它?
答案 0 :(得分:0)
我按照GaëlMarziou的建议解决了这个问题: 我发布了一个事件,框架负责将它存储到存储库中(或者根据侦听器的配置执行其他操作)
在我的用户服务中,我添加了以下内容:
...
private ApplicationEventPublisher applicationEventPublisher;
...
private void auditPasswordChange( User user ) {
applicationEventPublisher.publishEvent(
new AuditApplicationEvent(
user.getLogin(), AUDIT_PASSWORD_CHANGE, "message=Changed by own user")
);
}
...
public void changePassword(String password) {
...
auditPasswordChange(user);
}