Spring Data JPA教程:审计(二)

2023-10-30

公众号,欢迎关注

在这里插入图片描述

书接上文

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

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

获取授权用户信息

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.springframework
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data JPA教程:审计(二) 的相关文章

随机推荐

  • 陀螺专访

    3月30日 新浪与五粮液两大集团宣布联袂发布 五粮液数字酒证 并于 臻久网 正式开启预约 五粮液 区块链意味着什么 数字酒证要如何购买交易 酒证与传统实物酒有哪些差异 带着这些疑问 陀螺财经特别采访到臻久网CEO庞剑飞 与他一起探讨了那些关
  • mysql备份数据库以及拷贝数据库到另一台服务器上

    项目要结束了 至少开发要结束了 回头看看自己就这么一个人埋头开发了4个月 以及手上拿到的与自己付出完全不成正比的微薄工资 觉得自己真tmd的悲剧 或许这就是应届毕业生的命吧 恩 现在我已经不是应届毕业生了 现在项目做完了 我也尽到了善始善终
  • android otg主从切换,一种自动切换OTG设备主从模式下的Vbus电压的方法与电路与流程...

    本发明涉及otg设备的检测领域 更具体地说 涉及一种自动切换otg设备主从模式下的vbus电压的方法与电路 背景技术 现有技术中 具备otg功能的设备通过检测usb id引脚的状态来判断工作为host 主模式 usb id悬空 或者devi
  • 游戏开发各组件介绍

    控件control 控件是任何可以被看到 动画化和 或以某种方式交互的对象 控件是用户界面的基本构建块 示例包括精灵图像 按钮 标签等 视图view 视图是控件和动画的集合 表示用户界面中的逻辑 屏幕 视图的一个例子是应用程序中的主菜单或闪
  • 《信号与系统》解读 第1章 信号与系统概述-5:非常重要!!!深入、详细地解读什么基本的复指数信号、IQ信号、欧拉公式?

    前言 正弦信号与复指数信号 更准确称为虚指数信号 是现代移动通信系统中最基本的信号 其中正弦信号常是射频调制的载波信号 而虚指数信号 包含了两路同频的正交正弦与余弦信号 常用于现代通信基带数字调制 因此理解正弦信号和复指数信号 是深入理解现
  • 计算机基础:原码补码反码计算

    结论 1 正数的原码 反码 补码 2 负数的反码 在其原码的基础上 符号位不变 其余各个位取反 负数的补码 在反码的基础上 1 负数的补码 在原码的基础上 符号位不变 其余各位取反 最后末位 13 0 在计算机种分 0与 0 它们的原码 补
  • electron-updater更新遇到的问题 The URL protocol of the current origin (‘app://.‘) is not supported

    目前的Vue脚手架 我使用的是vue cli4 默认会携带一个 registerServiceWorker的东西 这个东西是做什么的呢 首先说明 registerServiceWorker可以运用于主流框架 它只是为了简化缓存机制产生的js
  • 大学生团体天梯赛(第十届)

    题目地址 天梯赛 include
  • pppd详解_pppd拨号脚本说明文档

    加入调试信息 nodetach ipcp accept local ipcp accept remote usepeerdns 使用服务器端协商的 DNS defaultroute 使用默认线路 user card 电信 card 移动 c
  • 【ShaderToy】基础篇之谈谈点、线的绘制

    写在前面 写前面一篇的时候 发现还是不够基础 因此打算增加几篇基础篇 从点线面开始 希望可以更好理解 其实用Pixel Shader的过程很像在纸上绘画的过程 屏幕上的每一个像素对应了纸上的一个方格 如果你愿意 你甚至可以一个个判断像素的位
  • JS实现数组随机读取思路,js数组随机思路分析

    需要了解的 Math 对象方法 方法 描述 ceil x 对数进行上舍入 即向上取整 floor x 对 x 进行下舍入 即向下取整 round x 四舍五入 random 返回 0 1 之间的随机数 包含 0 不包含 1 一些实例说明 M
  • matlab函数库-optimset,非线性优化-matlab函数库-optimset

    创建或编辑一个最优化参数选项 句法规则 options optimset param1 value1 param2 value2 设置所有参数及其值 未设置的为默认值 options optimset optimfun 设置与最优化函数有关
  • layui左侧三级菜单2.0

    之前在layui 1 0的时候写过一个三级菜单 那时候用三级菜单还要自己扩展 与后台交互也显得麻烦 现在新版本的layui自动就可以实现三级菜单了 很多朋友在问 我就帮大家整理了一下样式大家可以改改 直接上代码 ul class layui
  • Android Geocoder(位置解析)

    Android中提供GPS定位服务 同时开发者可以对获得的位置信息进行解析 可以获得位置的详细信息 1 gps定位 在Eclipse中建立android应用程序 android sdk中提供了locationmanager来获得系统提供的定
  • Python练习(三)

    目录 传感器日志光照统计 文本字符分布 白鹿原 词频统计 习题 传感器日志光照统计 本题目附件提供了一个传感器日志文件 为文本类型 共 1 千行 每行包含了日期 时间和 4 种传感器读数值 其中 4 种传感器读数值分别是 温度 湿度 光照和
  • Spring Boot 实现接口幂等性的 4 种方案

    一 什么是幂等性 幂等是一个数学与计算机学概念 在数学中某一元运算为幂等时 其作用在任一元素两次后会和其作用一次的结果相同 在计算机中编程中 一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同 幂等函数或幂等方法是指可以使
  • 广点通sdk接入 _橱窗广告

    广点通sdk接入 橱窗广告 1 导入相关架包 写入相关权限和配置 android query full 0 26 7 jar GDTUnionSDK 4 8 513 jar
  • 【Elasticsearch学习笔记-基础篇3】Elasticsearch 聚集(aggregation)与过滤器(filter)

    前言 这篇主要总结一下 es 的聚集 aggregation 与过滤器 filter 不会涉及到具体的 API 操作与示例 主要总结概念性与本人理解的内容 以下是主要内容地图 在写聚集之前 我们先来看一下过滤器 过滤器 Filter 首先
  • linux安装odoo10,Centos7部署Odoo10生产环境

    该篇文章是我参考网上教程 整理出适合自己使用的方法 是通过odoo10的rpm包进行安装 一 安装odoo10 1 安装相关依赖 yum update yum install wget yum install y epel release
  • Spring Data JPA教程:审计(二)

    公众号 欢迎关注 书接上文 本文解决前面两个问题中的第二个问题 我们将为实体加上创建者和修改者的信息 首先创建一个返回授权用户信息的组件 获取授权用户信息 Spring Data JPA使用AuditorAware