Springboot拦截器IP防刷 + IP黑名单功能

为了方便查看 尽量把方法都放到一个文件内

先创建一个WebMvcConfigurer

@Configuration
@EnableConfigurationProperties(FileUploadProperties.class)
public class WebMvcConfigurer extends WebMvcConfigurationSupport {
          
   

	// 前面省略...
	
	@Bean
    public UserUrlInterceptor userUrlInterceptor() {
          
   
        return new UserUrlInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
          
   
        registry.addInterceptor(userUrlInterceptor()).addPathPatterns("/**").excludePathPatterns("/sys/getVerifyToBase");
    }
}

接下来进入拦截器内部 UserUrlInterceptor

接下来就是黑名单了 创建BlackListEntity实体

@Data
@TableName("blacklist")
public class BlacklistEntity extends BaseEntity implements Serializable {
          
   
	private static final long serialVersionUID = 1L;

	/**
	 * 主键
	 */
	@TableId("id")
	@ApiModelProperty(value = "id")
	private String id;

	/**
	 * IP
	 */
	@TableField("ip")
	@ApiModelProperty(value = "ip")
	private String ip;

	/**
	 * 黑名单结束时间
	 */
	@TableField("disable_time")
	@ApiModelProperty(value = "disable_time")
	private Date disableTime;

	/**
	 * 创建时间
	 */
	@TableField("create_time")
	@ApiModelProperty(value = "create_time")
	private Date createTime;

	/**
	 * 更新时间
	 */
	@TableField("update_time")
	@ApiModelProperty(value = "update_time")
	private Date updateTime;

	/**
	 * 是否删除(1未删除;0已删除)
	 */
	@TableField("deleted")
	@ApiModelProperty(value = "deleted")
	private Integer deleted;


}

数据库表设计

CREATE TABLE `blacklist` (
  `id` varchar(64) NOT NULL COMMENT 主键,
  `ip` varchar(255) DEFAULT NULL COMMENT IP,
  `disable_time` datetime DEFAULT NULL COMMENT 黑名单结束时间,
  `create_time` datetime DEFAULT NULL COMMENT 创建时间,
  `update_time` datetime DEFAULT NULL COMMENT 更新时间,
  `deleted` tinyint(4) DEFAULT 1 COMMENT 是否删除(1未删除;0已删除),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=IP黑名单;
经验分享 程序员 微信小程序 职场和发展