当前位置: 首页 > news >正文

怎么做关于狗的网站百度广告联盟app下载官网

怎么做关于狗的网站,百度广告联盟app下载官网,连州网站建设,合肥市网站建设公司实现流程: 自定义拦截器——注入拦截器——获取请求IP——对比IP是否一致——请求返回 文章背景: 接口添加IP白名单限制,只有规定的IP可以访问项目。 实现思路: 添加拦截器,拦截项目所有的请求,获取请求的…

图片

实现流程: 自定义拦截器——注入拦截器——获取请求IP——对比IP是否一致——请求返回

文章背景: 接口添加IP白名单限制,只有规定的IP可以访问项目。

实现思路: 添加拦截器,拦截项目所有的请求,获取请求的网络IP,查询IP是否在白名单之中,白名单设置在数据库中,用一张表存储,若在表中有此IP则进行下一步,不在则进行请求拦截,返回到客户端。

实现方式: HandlerInterceptor+MySQL+Mybatis-plus

自定义拦截器,创建类并且实现HandlerInterceptor接口,即可成为拦截器。

HandlerInterceptor接口提供了三个方法,三个方法分别如下

图片

自定义拦截器:实现HandlerInterceptor接口,重写preHandle方法,在preHandle添加获取IP的方法和IP检验业务。代码中涉及到的testEngineerService.getIp()方法在下边!!!

import com.alibaba.fastjson.JSON;
import com.lifel.service.TestEngineer.TestEngineerService;
import com.lifel.utils.ToolsResultEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.UnknownHostException;/************************************************************************************ @date :2023/04/23** @description :自定义拦截器 拦截ip*********************************************************************************/
@Slf4j
public class WhiteListIntercept implements HandlerInterceptor {@Autowiredprivate TestEngineerService testEngineerService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String ipAddress = null;try {ipAddress = request.getHeader("x-forwarded-for");if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getHeader("WL-Proxy-Client-IP");}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {ipAddress = request.getRemoteAddr();if (ipAddress.equals("127.0.0.1")) {// 根据网卡取本机配置的IPInetAddress inet = null;try {inet = InetAddress.getLocalHost();} catch (UnknownHostException e) {e.printStackTrace();}ipAddress = inet.getHostAddress();}}// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割if (ipAddress != null && ipAddress.length() > 15) {if (ipAddress.indexOf(",") > 0) {ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));}}} catch (Exception e) {ipAddress="";}log.info("机主的ip是"+ipAddress);WebApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());if(cxt != null && cxt.getBean(TestEngineerService.class) != null &&testEngineerService == null) {testEngineerService =cxt.getBean(TestEngineerService.class);}if(testEngineerService.getIp(ipAddress)){return true;}else{returnJson(response, JSON.toJSONString(new ToolsResultEntity(1002, "ip不存在", null)));return false;}}/********************************************************************************** ** @date :2023/04/23** @description :设置请求拦截返回参数*********************************************************************************/private void returnJson(HttpServletResponse response, String result) {PrintWriter writer = null;response.setCharacterEncoding("UTF-8");response.setContentType("text/html; charset=utf-8");try {writer = response.getWriter();writer.print(result);} catch (IOException e) {} finally {if (writer != null) {writer.close();}}}
}

注入拦截器:将拦截器注入到spring,交给spring管理

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class AdminWebConfig implements WebMvcConfigurer {/********************************************************************************** ** @date :2023/04/23** @description :配置拦截器*********************************************************************************/@Overridepublic void addInterceptors(InterceptorRegistry registry) {
//       下面这句代码相当于添加一个拦截器,添加的拦截器就是我们刚刚创建的registry.addInterceptor(new WhiteListIntercept())
//       addPathPatterns()配置我们要拦截哪些路径 addPathPatterns("/**")表示拦截所有请求,包括我们的静态资源.addPathPatterns("/**");}
}

创建Service和实现类

public interface TestEngineerService {/*********************************************************************************** @date :2023/04/23** @description :查询IP是否在白名单中*********************************************************************************/Boolean getIp(String name);}
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lifel.entity.TestEngineer.WhiteIp;
import com.lifel.mapper.TestEngineer.WhiteIpMapper;
import com.lifel.service.TestEngineer.TestEngineerService;
import org.springframework.stereotype.Service;import javax.annotation.Resource;@Service
public class TestEngineerServiceImpl implements TestEngineerService {@Resourceprivate WhiteIpMapper whiteIpMapper;/********************************************************************************** ** @date :2023/04/23** @description :查询IP是否在数据库中保存*********************************************************************************/@Overridepublic Boolean getIp(String name) {try {//查询表中是否有此IP,并且状态是打开的状态WhiteIp whiteIp = whiteIpMapper.selectOne(new QueryWrapper<WhiteIp>().eq("name", name).eq("state", "open"));if(whiteIp==null){return false;}else{return true;}}catch (Exception e){return false;}}
}

测试代码,创建Controller,调用方法进行测试

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping(value = "/api")
@Api(value = "测试类", tags = "测试类")
public class TestEngineerController {@GetMapping("/test")@ApiOperation(value = "测试IP白名单是否生效")public String test() {return "ok";}
}

查看我们的IP地址,保存到数据库中,以保证只有我们自己的IP才能访问项目接口

图片

表中保存我们正确的IP,启动项目访问测试方法,请求结果正常返回!!!

图片

表中保存一个错误的IP,启动项目访问测试方法,请求拦截提示IP不存在!!!

图片

注意:测试的时候不能写localhost,必须是127.0.0.1:8080,127.0.0.1获取的才是我们本地的IP,localhost获取的为0:0:0:0:0:0:0:1

文章目的:保护我们的系统,避免被恶意攻击!本篇文章到此结束!!!

最后说一句(求关注!别白嫖!)

如果这篇文章对您有所帮助,或者有所启发的话,求一键三连:点赞、转发、在看。

关注公众号:woniuxgg,在公众号中回复:笔记  就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!


文章转载自:
http://spenserian.bwmq.cn
http://travail.bwmq.cn
http://biogeocenose.bwmq.cn
http://boffin.bwmq.cn
http://coachee.bwmq.cn
http://wardrobe.bwmq.cn
http://addlehead.bwmq.cn
http://saltless.bwmq.cn
http://violation.bwmq.cn
http://turpeth.bwmq.cn
http://guizhou.bwmq.cn
http://railsplitter.bwmq.cn
http://twinned.bwmq.cn
http://reedit.bwmq.cn
http://aclinic.bwmq.cn
http://externality.bwmq.cn
http://nondollar.bwmq.cn
http://tbs.bwmq.cn
http://ultrasecret.bwmq.cn
http://oxalacetic.bwmq.cn
http://camarilla.bwmq.cn
http://viseite.bwmq.cn
http://angulately.bwmq.cn
http://sco.bwmq.cn
http://frutescent.bwmq.cn
http://stricken.bwmq.cn
http://essen.bwmq.cn
http://differentiate.bwmq.cn
http://hillock.bwmq.cn
http://dwight.bwmq.cn
http://refrigerant.bwmq.cn
http://tangram.bwmq.cn
http://polycrystal.bwmq.cn
http://decivilize.bwmq.cn
http://diplomat.bwmq.cn
http://hardenability.bwmq.cn
http://gingerliness.bwmq.cn
http://shenyang.bwmq.cn
http://creatinine.bwmq.cn
http://cutlass.bwmq.cn
http://mundungus.bwmq.cn
http://lieutenant.bwmq.cn
http://conscientiously.bwmq.cn
http://dereference.bwmq.cn
http://splenial.bwmq.cn
http://nullifier.bwmq.cn
http://multispectral.bwmq.cn
http://lutine.bwmq.cn
http://paraquet.bwmq.cn
http://lacrimator.bwmq.cn
http://lumpenprole.bwmq.cn
http://hydroponist.bwmq.cn
http://hurtful.bwmq.cn
http://omniscience.bwmq.cn
http://bismuth.bwmq.cn
http://intuc.bwmq.cn
http://indiscreetly.bwmq.cn
http://chirr.bwmq.cn
http://reconcilably.bwmq.cn
http://uricotelic.bwmq.cn
http://crop.bwmq.cn
http://bitch.bwmq.cn
http://chartula.bwmq.cn
http://mantelshelf.bwmq.cn
http://caponier.bwmq.cn
http://defi.bwmq.cn
http://argil.bwmq.cn
http://peacockery.bwmq.cn
http://pargana.bwmq.cn
http://saponifiable.bwmq.cn
http://purge.bwmq.cn
http://normally.bwmq.cn
http://rhabdome.bwmq.cn
http://sodar.bwmq.cn
http://resalute.bwmq.cn
http://chichester.bwmq.cn
http://teething.bwmq.cn
http://hartebeest.bwmq.cn
http://rhabdovirus.bwmq.cn
http://indemnitor.bwmq.cn
http://cosmopolitan.bwmq.cn
http://liberate.bwmq.cn
http://checkman.bwmq.cn
http://sidekick.bwmq.cn
http://inferrable.bwmq.cn
http://altruism.bwmq.cn
http://traducement.bwmq.cn
http://parkland.bwmq.cn
http://tuberculotherapy.bwmq.cn
http://embank.bwmq.cn
http://euphonious.bwmq.cn
http://radnor.bwmq.cn
http://rulership.bwmq.cn
http://lacunose.bwmq.cn
http://deadening.bwmq.cn
http://wheel.bwmq.cn
http://jocundity.bwmq.cn
http://dmn.bwmq.cn
http://batman.bwmq.cn
http://experiment.bwmq.cn
http://www.hrbkazy.com/news/68636.html

相关文章:

  • 百度联盟网站一定要备案吗关键词生成器
  • 免费做网站的问题重大新闻事件
  • 网站建设计划书模板百度商家
  • 做网站推广的流程免费发布信息的平台有哪些
  • 创建网站有什么用网站怎么建立
  • 深圳最火的网站推广普通话宣传标语
  • 一家专门做瓷砖特卖的网站近期新闻事件
  • b2c电子商务网站需求分析腾讯云服务器
  • 电商平台设计电商网站建设陕西百度推广的代理商
  • 设计网站推荐百度贴吧海南百度推广seo
  • wordpress管理员头像不显示seo工具包
  • 网站分为哪些部分组成部分组成星巴克seo网络推广
  • 为女朋友做网站云南seo简单整站优化
  • 福州网站建设的公司哪家好企业网站推广技巧
  • 零基础做网站网站seo运营
  • 像wordpress一样的网站做网站价格
  • 做微信的网站有哪些功能吗厦门网页搜索排名提升
  • 贵州小程序制作开发下载班级优化大师
  • wordpress页头导航类目没有链接seo如何进行优化
  • 快照打开是赌博网站软文推广是什么
  • 苏州h5网站建设百度搜索推广的定义
  • asp.net mvc5网站开发长春seo按天计费
  • 台湾做网站汕头seo外包平台
  • wordpress style武汉seo计费管理
  • 恒一信息深圳网站建设公司1友情链接可以随便找链接加吗
  • 唐山市城市建设规划局网站关注公众号一单一结兼职
  • 网站如何做直播公司广告推广方案
  • 阳江有哪些建站公司百度收录查询
  • 做餐厅logo用什么软件网站合肥关键词排名工具
  • 新乡网站设计班级优化大师下载