不知道有没有同学发现,聚合服务没有加token的时候,也是可以访问的,其实很简单,因为聚合服务也是需要鉴权的,也是需要先留的,这两个东西,我们同样采用切面来做。
考虑到聚合服务,有些接口不需要做限流,有些不需要做鉴权,我们用注解来实现。
新建两个注解类,鉴权注解,限流注解
鉴权注解Security
/**
* All rights Reserved, Designed By OprCalf
* Copyright: Copyright(C) 2016-2020
* Company OprCalf Ltd.
*/
package com.platform.gateway.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**@projectName: platform-gateway
* @package: com.platform.gateway.common.annotation
* @className: Security.java
* @description: 鉴权注解,用于那些需要鉴权的方法
* @author: OprCalf
* @date: 2019年5月22日
*/
@Inherited
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Security {
}
限流RateLimit注解类:
/**
* All rights Reserved, Designed By OprCalf
* Copyright: Copyright(C) 2016-2020
* Company OprCalf Ltd.
*/
package com.platform.gateway.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**@projectName: platform-gateway
* @package: com.platform.gateway.common.annotation
* @className: RateLimit.java
* @description: 限流注解,用于那些需要被限流的接口
* @author: OprCalf
* @date: 2019年5月22日
*/
@Inherited
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RateLimit {
// 默认每秒放入桶中的token
int limitNum() default 50;
}
鉴权切面类Security
/**
* All rights Reserved, Designed By OprCalf
* Copyright: Copyright(C) 2016-2020
* Company OprCalf Ltd.
*/
package com.platfor