package com.boco.nbd.wios.wx.permisson; import com.boco.nbd.wios.manage.service.impl.TokenService; import com.boco.nbd.wios.manage.util.SpringContextUtil; import com.ihidea.core.support.exception.ServiceException; import org.apache.commons.lang.StringUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; import java.lang.reflect.Method; /** * @author kevin * @create 2020/11/27 */ @Component @Aspect public class WxPermissionAspect implements Ordered { @Autowired private TokenService tokenService; @Before(value = "@within(WxPermission) || @annotation(WxPermission)") public void beforeMethod(JoinPoint joinPoint){ MethodSignature signature = (MethodSignature)joinPoint.getSignature(); Method method = signature.getMethod(); WxPermission wxPermission = method.getAnnotation(WxPermission.class); if(wxPermission == null){ wxPermission = method.getDeclaringClass().getAnnotation(WxPermission.class); } if(wxPermission != null && wxPermission.require()){ String token = SpringContextUtil.getToken(); if(StringUtils.isBlank(token) || !tokenService.verifyWxToken(token)){ throw new ServiceException("401", "登录失效,请重新登录"); } } } @Override public int getOrder() { return Integer.MAX_VALUE; } }