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