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黑名单;

