Spring Data JPA教程:审计(二)

本文介绍如何在Spring Data JPA中实现审计功能,包括获取授权用户信息、配置ApplicationContext、修改实体类,并探讨为何选择Spring Data JPA的审计支持而非JPA回调方法。通过注解和接口,可以轻松为实体添加创建者和修改者信息,同时避免与Spring Security的过度耦合。
摘要由CSDN通过智能技术生成

公众号,欢迎关注

在这里插入图片描述

书接上文

本文解决前面两个问题中的第二个问题,我们将为实体加上创建者和修改者的信息

首先创建一个返回授权用户信息的组件

获取授权用户信息

Spring Data JPA使用AuditorAware<T>接口获取用户信息,AuditorAware接口的泛型参数T描述了实体类中审计人的类型

现在开始创建一个返回用户信息的类:

  1. 创建UsernameAuditorAware类实现AuditorAware接口,我们想存储String类型的用户名,所以参数T设置为String
  2. 实现getCurrentAuditor()方法:
    1. SecurityContext获取Authentication对象
    2. 如果得到的授权对象为null或者未经认证,返回null
    3. 返回username

UsernameAuditorAware类源码如下:

import org.springframework.data.domain.AuditorAware;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.User;

public class UsernameAuditorAware implements AuditorAware<String> {
   

    @Override
    public String getCurrentAuditor() {
   
        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
        if (authentication == null || !authentication.isAuthenticated()) {
   
            return null;
        }
        return ((User) authentication.getPrincipal()).getUsername();
    }
}

配置Application Context

下面我们将UsernameAuditorAware配置成一个bean,修改PersistenceContext类,步骤如下:

  1. 创建auditorProvider()方法返回一个AuditorAware<String>对象
  2. 方法实现里new一个UsernameAuditorAware对象返回
  3. 给方法加上@Bean注解
  4. 加上@EnableJpaAuditing注解

PersistenceContext类代码如下:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.auditing.DateTimeProvider;
import org.springframework.data.domain.AuditorAware;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.sp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值