权限校验aop实现

/**
 * aop增强,用于处理每个操作前操作角色身份的确认
 */
@Slf4j
@Component
@Aspect
public class RoleCheckAspect {

    /**
     * 定义切入点,切入点为com.example.demo.aop.AopController中的所有函数
     *通过@Pointcut注解声明频繁使用的切点表达式
     */
    @Pointcut("execution(public * cn.com.xytkj.shop.admin.controller.console.ConsoleController.*(String)) && args(token) && @within(roleCheck))")
    public void RoleCheckAspect(String token,RoleCheck roleCheck){}

    /**
     * @description  使用环绕通知
     */
    @Around(value = "RoleCheckAspect(point,roleCheck)")
    public void doAroundGameData(ProceedingJoinPoint pjp, String point,RoleCheck roleCheck){
        String[] roles = roleCheck.value();
        for (String role:roles){
            log.info("角色 {}",role);
        }
        try{

            pjp.proceed();
            System.out.println("球星本场得到" + point + "分" );
        }
        catch(Throwable e){
            System.out.println("异常通知:球迷要求退票!");
        }
    }

}

猜你喜欢

转载自www.cnblogs.com/ushowtime/p/13367858.html