Springcloud微服务安全实战-3-9API安全机制之审计日志

Springcloud微服务安全实战-3-9API安全机制之审计⽇志
⾸先说⼀下审计⽇志的处理。审计⽇志处理的位置,应该是在认证之后,授权之前。因为只有你在认证之后,你才能知道这个请求到底是谁发出来的,谁在做这个事情。在这个授权之前,这样的话那些被拒绝掉的请求。在响应的时候你才可以把他记下来。
⽇志⼀定要持久化,可以把它存到数据库⾥,也可以把它写到⽂件⾥。
怎么保证过滤器按照顺序执⾏的,我们在做流控和认证的过滤器的时候,实际上,并没有指定的顺序。那么现在到底是流控先执⾏还是认证先执⾏?
在流控的Filter RateLimitFilter先打印⼀个1
BasicAuthecationFilter:在认证的Filter⾥⾯我们再打⼀个2
发送请求发现先输出了2  后输出了1。说明先⾛的认证再⾛的流控
注意事项:
bind9>夜莺的歌声教学设计
输出后,记得执⾏:filterChain.doFilter(request,response); 让代码继续往下⾛。下⾯是我在IDEA⾥⾯的截图
调整Filter的执⾏顺序
认证在第⼆个就写个@Order(2)
重启服务进⾏测试
审计⽇志-简单实现
审计⽇志不能⽤filter来做了。因为审计⽇志我们要做两个动作。第⼀个是在请求进来后,我们要做⼀个动作。然后在请求出去之后,要把这个⽇志更新⼀下,所以进和出都要做事。如果只在请求进来记录实际上不知道最终这个请求最终是成功了还是失败了。这样这个⽇志记录不完整。sf9
如果⽤Filter来做,它只有⼀个doFilterInternal这么个⽅法,它是标准的Filter⽅法的实现,并没有明确的区分在请求进来执⾏还是请求出去的时候执⾏。
我们使⽤SpringBoot提供的Interceptor。
ControllerAdvice⼀般是⽤来做全局的异常处理。
新建审计⽇志类
AuditLog
指定createTime和modifyTime存成时间戳。
注意:@Temporal和TemporalType.TIMESTAMP都是import javax.persistence.包下的。
加上@CreateDate和@LastModifiedDate这两个注解,我们在使⽤Repository的save⽅法的时候,它会⾃动判断你是创建还是修改并给这两个⽇期赋值。
org.springframework.data.annotation.LastModifiedDate包下的
语法检查
package com.imooc.security.log;
import lombok.Data;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.util.Date;
@Entity
@Data
@EntityListeners(AuditingEntityListener.class)
public class AuditLog {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String method;
private String path;红杏枝头春意浓txt
private Integer status;
private String username;
@Temporal(TemporalType.TIMESTAMP)
@CreatedDate
private Date createdTime;
@Temporal(TemporalType.TIMESTAMP)
@LastModifiedDate
private Date modifyTime;
}
审计⽇志Repository
IDEA⾥⾯截图
package com.imooc.security.log;
import org.springframework.pository.JpaSpecificationExecutor;
import org.pository.CrudRepository;
public interface AuditLogRepository extends JpaSpecificationExecutor<AuditLog>, CrudRepository<AuditLog,Long> { }
创建Interceptor
机器翻译论文继承的是,HandlerInterceptorAdpater 处理之前和处理之后,主要是要实现这两个⽅法。
这⾥只需要preHandler和afterCompetion这两个⽅法即可。其他的⽅法删除。

本文发布于:2024-09-22 09:25:42,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/692931.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:请求   处理   审计   认证   进来   服务
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议