Skip to content
广告❤️成为赞助商

数据变动记录拦截器

在数据库操作中,记录数据变动和控制操作的安全性是非常重要的。Mongo-Plus 提供了一个数据变动记录拦截器 DataChangeRecorderInnerInterceptor,它不仅能够自动记录操作日志,还支持安全阈值控制,例如限制批量更新或插入的数量

DataChangeRecorderInnerInterceptor

  • DataChangeRecorderInnerInterceptor 是 Mongo-Plus 提供的一个拦截器,它可以在执行数据库操作时自动记录数据变动,并且可以根据配置的安全阈值来控制操作,比如限制一次批量更新或插入的记录数不超过 1000 条。
  • setExceptionMessage(String): 超出阈值提示信息
  • setIgnoredColumnList(List): 忽略的表
  • setBatchUpdateLimit(Integer): 批量更新条数上限
  • setdisplayCompleteData(Boolean): 是否显示完整数据,开启后,changedData字段数据量可能会很大

示例

在SpringBoot中,将DataChangeRecorderInnerInterceptor注册为Bean,并根据需要配置其他信息

java
@Bean
public DataChangeRecorderInnerInterceptor dataChangeRecorderInnerInterceptor(){
    DataChangeRecorderInnerInterceptor dataChangeRecorderInnerInterceptor = new DataChangeRecorderInnerInterceptor();
    // 批量更新条数上限
    dataChangeRecorderInnerInterceptor.setBatchUpdateLimit(100);
    // 设置超出阈值提示信息
    dataChangeRecorderInnerInterceptor.setExceptionMessage("操作条数超出阈值");
    // 忽略的表
    dataChangeRecorderInnerInterceptor.setIgnoredColumnList(new ArrayList<>());
    // 是否显示完整数据,开启后,changedData字段数据量可能会很大
    dataChangeRecorderInnerInterceptor.setDisplayCompleteData(true);
    return dataChangeRecorderInnerInterceptor;
}

使用插件

配置好插件之后使用 Mongo-Plus 提供的 CRUD 方法,插件会自动记录数据变动并执行安全控制:

当执行批量更新或插入或根据多个_id删除操作时,如果操作的记录数超过了配置的安全阈值,插件会抛出异常

注意事项

  • 确保在配置拦截器时设置了合适的安全阈值,以防止不安全的批量操作。
  • 插件会自动记录数据变动,但你需要自行实现日志记录的逻辑。
  • 在配置和使用插件时,要考虑到数据库的性能和操作的实际需求。 DataChangeRecorderInnerInterceptor 是一个强大的工具,它可以帮助你自动记录数据变动并控制操作的安全性。通过合理配置,你可以确保数据库操作的安全性和数据的完整性。记得在使用时遵循最佳实践,确保系统的安全性和稳定性。