spring boot对IP地址设置黑白名单的项目实践
1、在yml配置文件中
ip: whitelist: IP1 #白名单 blacklist: IP2 #黑名单
2、定义过滤器类
@Component public class Ip编程客栈Filter implements Filter { //白名单IP列表 private List<String> whitelist; //黑名单IP列表 private List<String> blacklist; @Override public void init(FilterConfig filterConfig) throws ServletException { //获取上下文信息 ServletContext context = filterConfig.getServletContext(); WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context); Environment environment = ctx.getBean(Environment.class); //赋予初值 whitelist = Arrays.stream(environment.getProperty("ip.whitelist").split(",")) .map(String::trim) .collect(Collectors.toList()); blacklist=Arrays.stream(environment.getProperty("ip.blacklist").split(",")) .map(String::trim) .collect(Collectors.toList()); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest =www.devze.com (HttpServletRequest) request; String ip = httpRequest.getRemoteAddr(); if (whitelist.contains(ip)) { // 白名单IP,直接通过 chain.doFilter(request, response); } else if (blacklist.contains(ip)) { // 黑名单IP,拒绝访问 HttpServletResponse httpResponse = (HttpShttp://www.devze.comervletResponse) response; httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "IP is in blacklist"); } else { // 非黑OMKWmK白名单IP,根据业务需求处理(例如:允许或拒绝) chain.doFilter(request, response); } } @Override public void destroy() { // 清理资源,如果有的话 } }
3、注册config类FilterConfig
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean<IpFilter> ipFilterRegistration() { FilterRegistrationBean<IpFilter> registrationBean = new FilterRegistrationBean<&g编程t;(); registrationBean.setFilter(new IpFilter()); registrationBean.addUrlPatterns("/*"); // 设置过滤器拦截的路径 registrationBean.setName("ipFilter"); registrationBean.setOrder(1); // 设置过滤器的顺序 return registrationBean; } }
到此这篇关于spring boot对IP地址设置黑白名单的项目实践的文章就介绍到这了,更多相关springboot IP黑白名单内容请搜索编程客栈(www.devze.com)以前的文章或继续浏
精彩评论