MinaPermissionAspect.java 1.6 KB
Newer Older
苗卫卫 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
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/10/30 18:12
 */
@Component
@Aspect
public class MinaPermissionAspect implements Ordered {

    @Autowired
    private TokenService tokenService;

    @Before(value = "@within(MinaPermission) || @annotation(MinaPermission)")
    public void beforeMethod(JoinPoint joinPoint){
        MethodSignature signature = (MethodSignature)joinPoint.getSignature();
        Method method = signature.getMethod();
        MinaPermission minaPermission = method.getAnnotation(MinaPermission.class);
        if(minaPermission == null){
            minaPermission = method.getDeclaringClass().getAnnotation(MinaPermission.class);
        }
        if(minaPermission != null && minaPermission.require()){
            String token = SpringContextUtil.getToken();
            if(StringUtils.isBlank(token) || !tokenService.verifyMinaToken(token)){
                throw new ServiceException("401", "登录失效,请重新登录");
            }
        }
    }

    @Override
    public int getOrder() {
        return Integer.MAX_VALUE;
    }
}