VS Code插件实战:从场景驱动到效率倍增的杂项工具箱
2026/8/7 6:30:08
<!--aop依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>annotation包下@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceAuthCheck{/** * 必须有某个角色 */StringmustRole()default"";}aop包下@Aspect@ComponentpublicclassAuthInterceptor{@ResourceprivateUserServiceuserService;/** * 执行拦截 * * @param joinPoint 切入点 * @param authCheck 权限校验注解 */@Around("@annotation(authCheck)")publicObjectdoInterceptor(ProceedingJoinPointjoinPoint,AuthCheckauthCheck)throwsThrowable{StringmustRole=authCheck.mustRole();RequestAttributesrequestAttributes=RequestContextHolder.currentRequestAttributes();HttpServletRequestrequest=((ServletRequestAttributes)requestAttributes).getRequest();// 当前登录用户UserloginUser=userService.getLoginUser(request);UserRoleEnummustRoleEnum=UserRoleEnum.getEnumByValue(mustRole);// 不需要权限,放行if(mustRoleEnum==null){returnjoinPoint.proceed();}// 以下为:必须有该权限才通过// 获取当前用户具有的权限UserRoleEnumuserRoleEnum=UserRoleEnum.getEnumByValue(loginUser.getUserRole());// 没有权限,拒绝if(userRoleEnum==null){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}// 要求必须有管理员权限,但用户没有管理员权限,拒绝if(UserRoleEnum.ADMIN.equals(mustRoleEnum)&&!UserRoleEnum.ADMIN.equals(userRoleEnum)){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}// 通过权限校验,放行returnjoinPoint.proceed();}}@AuthCheck(mustRole=UserConstant.ADMIN_ROLE)除了下面这些类型,其余类型会报错
byte,short,int,longfloat,doublecharbooleanStringTimeUnit.SECONDS@interface类型int[],String[],MyEnum[],MyAnnotation[]