一、注解类
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.PACKAGE})@Retention(RetentionPolicy.RUNTIME)public @interface TokenPermission {}
二、切面类
@Aspect@Component@Slf4jpublic class Permission { @Resource private RedisTemplate redisTemplate; /** * 设置切入点 */ @Pointcut("@annotation(com.dragonest.aop.TokenPermission)") public void tokenPointer() { } /** * 环绕切入 * * @param pjp * @return */ @Around("tokenPointer()") public Object around(ProceedingJoinPoint pjp) throws Throwable { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); String token = request.getHeader(CommonConstants.TOKEN); Object tokenInfo = redisTemplate.opsForValue().get("redis中token的key"); if (tokenInfo == null) { // 抛出token验证异常统一处理 throw GlobalException.getInstance(ErrorCodeEnum.TOKEN_EMPTY); } Object object = pjp.proceed(); return object; }}