标签:return 生成 token oid jar context 控制台 exe ram
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
</dependency>
@Log4j2
@Aspect
@Component
public class WebLogAspect {
@Pointcut("execution(public * io.renren.controller.*.*(..))")
public void logCut() {
}
@Before("logCut()")
public void doBefore(JoinPoint joinPoint) {
// 接收到请求,记录请求内容
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
log.info("请求地址 : " + request.getRequestURL().toString());
log.info("参数 : " + Arrays.toString(joinPoint.getArgs()));
}
@Around("logCut()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
long startTime = System.currentTimeMillis();
Object ob = pjp.proceed();// ob 为方法的返回值
log.info("请求耗时 : " + (System.currentTimeMillis() - startTime) / 1000.0 + "s");
return ob;
}
}
再次启动项目,控制台将输出日志,并将日志写入到文件中
方法1:
1.后端生成一个唯一的提交令牌(token),并存储在缓存中。
2.页面提交请求携带这个提交令牌,后端验证并在第一次验证后删除该令牌,保证提交请求的唯一性。
方法2:
1.自定义注解 @NoRepeatSubmit 标记Controller中的提交请求
2.通过AOP 对所有标记了 @NoRepeatSubmit 的方法拦截
3.在业务方法执行前,获取当前用户的 token + 当前请求地址,作为一个唯一 KEY,去获取锁
4.业务方法执行后,释放锁
标签:return 生成 token oid jar context 控制台 exe ram
原文地址:https://www.cnblogs.com/xxrl-c/p/12195945.html