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