java 配置弹簧数据jpa的审核员审计功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 配置弹簧数据jpa的审核员审计功能相关的知识,希望对你有一定的参考价值。
import org.springframework.context.annotation.Configuration;
import org.springframework.data.domain.AuditorAware;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import java.util.Optional;
@Configuration
public class UserAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
SecurityContext ctx = SecurityContextHolder.getContext();
if (ctx == null) {
return Optional.empty();
}
if (ctx.getAuthentication() == null) {
return Optional.empty();
}
if (ctx.getAuthentication().getPrincipal() == null) {
return Optional.empty();
}
Object principal = ctx.getAuthentication().getPrincipal();
if (principal.getClass().isAssignableFrom(User.class)) {
return Optional.of(((User) principal).getUsername());
} else {
return Optional.empty();
}
}
}
@Entity
@EntityListeners(AuditingEntityListener.class)
@JsonInclude( JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler" })
public class Model implements Serializable{
@Id
@Column(unique = true, nullable = false,columnDefinition = "bigint")
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@CreationTimestamp
@Column(columnDefinition="datetime COMMENT '登录时间'")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date createTime;
@CreatedBy
@Column(columnDefinition = "varchar(100) COMMENT '创建人'")
private String createBy;
@UpdateTimestamp
@Column(columnDefinition = "datetime COMMENT '修改时间'")
private Date lastModifiedDate;
@LastModifiedBy
@Column(columnDefinition = "varchar(100) COMMENT '修改人'")
private String lastModifiedBy;
//.....todo add getter and setter
}
以上是关于java 配置弹簧数据jpa的审核员审计功能的主要内容,如果未能解决你的问题,请参考以下文章
更新时未在返回的实体上设置标记为可更新 = 假的弹簧数据审核字段
37-SQLServer的审核/审计功能介绍
无法使用弹簧数据 jpa CrudRepository
等保测评2.0:Windows安全审计
金融行业服务器安全审计
简练网软考知识点整理-项目配置管理配置审计