package com.sf.gis.common.annotation; import java.lang.annotation.*; @Inherited @Target(ElementType.METHOD) @Documented @Retention(RetentionPolicy.RUNTIME) public @interface InterAccess { }
/** *消息接收接口 (审批、作废、办结) * @param * @return */ @PostMapping("/receiveMessages") @InterAccess public ResultResponse receiveMessages(@RequestBody ReceiveMessagesDto receiveMessagesDto){ }
package com.sf.gis.boot.interceptor; import com.sf.gis.common.constants.CommonConstant; import com.sf.gis.common.exceprtion.UnauthorizedException; import com.sf.gis.common.service.AppConfigAccessService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; /** * 记录操作日志 如果切点方法抛异常,不会记录操作日志 */ @Slf4j @Aspect @Component public class IntAccessAspect { @Autowired private AppConfigAccessService appConfigAccessService; @Pointcut("@annotation(com.sf.gis.common.annotation.InterAccess)") public void annotationPointcut() { } @Before("annotationPointcut()") public void beforePointcut(JoinPoint joinPoint) { } @Around("annotationPointcut()") public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable { ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); HttpServletRequest request = requestAttributes.getRequest(); String token = request.getHeader(CommonConstant.TOKEN); log.info("token={}",token); if (StringUtils.isBlank(token)) { log.info("token为空,token={}",token); throw new UnauthorizedException("未授权, 无权限访问!"); } Boolean validToken = appConfigAccessService.validToken(token); log.info("token校验结束:{}",validToken); if (!validToken) { throw new UnauthorizedException("未授权, 无权限访问!"); } return joinPoint.proceed(); } }