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

php商城网站开发实例视频网上企业名称申请入口

php商城网站开发实例视频,网上企业名称申请入口,企业网页制作与网站设计,wordpress删除时间实现流程#xff1a; 自定义拦截器——注入拦截器——获取请求IP——对比IP是否一致——请求返回 文章背景#xff1a; 接口添加IP白名单限制#xff0c;只有规定的IP可以访问项目。 实现思路#xff1a; 添加拦截器#xff0c;拦截项目所有的请求#xff0c;获取请求的… 实现流程 自定义拦截器——注入拦截器——获取请求IP——对比IP是否一致——请求返回 文章背景 接口添加IP白名单限制只有规定的IP可以访问项目。 实现思路 添加拦截器拦截项目所有的请求获取请求的网络IP查询IP是否在白名单之中白名单设置在数据库中用一张表存储若在表中有此IP则进行下一步不在则进行请求拦截返回到客户端。 实现方式 HandlerInterceptorMySQLMybatis-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; charsetutf-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 QueryWrapperWhiteIp().eq(name, name).eq(state, open));if(whiteIpnull){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:8080127.0.0.1获取的才是我们本地的IPlocalhost获取的为0:0:0:0:0:0:0:1 文章目的保护我们的系统避免被恶意攻击本篇文章到此结束 最后说一句(求关注!别白嫖) 如果这篇文章对您有所帮助或者有所启发的话求一键三连点赞、转发、在看。 关注公众号woniuxgg在公众号中回复笔记  就可以获得蜗牛为你精心准备的java实战语雀笔记回复面试、开发手册、有超赞的粉丝福利
http://www.hkea.cn/news/14539489/

相关文章:

  • 网站模板怎么替换无锡专业网站制作
  • 网站开发与经营做网站 分类搜索
  • 自己做网站的过程西安专业网站制作服务
  • 25转行做网站运营完整的社群营销方案
  • 新网站 seo苏州室内设计公司排名
  • 铜川网站建设博达软件网站建设
  • 白银区住房和城乡建设局网站高端品牌网站建设建议
  • 安徽网站建设公司济宁市城市建设投资中心网站
  • 石碣网站仿做网站视频接口 怎么做
  • 建设工程标准在线网站在线咨询网站模板
  • 做门户网站源码石家庄房产信息网站
  • 做电容元器件的网站有哪些大连网页制作美工
  • 空间 网站都有 肿么做网站手机网站转换小程序
  • 北京优化网站推广如何建设提卡网站
  • 网站建设主要包括个人网站有自己服务器是不是就不需要虚拟主机
  • 建设部网站如何下载文件一般通过山女是什么梗
  • 泵网站建设正能量网站大全
  • 重庆网站建设注意事项旅游项目网站开发
  • 劳务派遣东莞网站建设什么颜色做网站好看
  • 网站不兼容怎么办没钱怎么做网站
  • 浙江建设招生网站品质好的形容词
  • 广州网站制作信科建设wordpress可以做电影站
  • 老板让我做镜像网站犯法吗wordpress修改页脚
  • 网站个人备案 企业备案vi设计是啥意思
  • 网站备案后怎么做美工模板网站
  • 电商网站开发 参考文献做网站公司 衡阳公司
  • 怎么做彩票网站变性WordPress
  • 婚纱摄影网站的设计与实现图文制作
  • 惠州专业网站建设中国企业在线官网
  • 梅州住房和建设局网站长沙抖音seo公司地址