文章目录

  • 前言
  • 需求描述
  • 问题解决
    • 思路
    • 代码
  • 访问例子说明
  • 多想一步:寻找规律,不用存储?
前言

体能状态先于精神状态,习惯先于决心,聚焦先于喜好。

需求描述

微信开发中会遇到一个安全域名的问题,微信要求将其提供的txt文件放到指定服务器,然后可以通过 http://域名/项目名/文件名.txt 来进行请求
访问成功的话,可以得到一个字符串,通过浏览器可以看到这个字符串

问题解决

参考来网上提供的一些方法,最后发现有两种思路
第一种是将txt文件作为静态文件加到项目里
第二种是增加 Controller 方法,既然微信请求后得到的是个字符串,那么我直接让 controller 返回字符串即可,即我不再保存txt文件了,而是直接保存txt文件的内容
比如放到 redis里,文件名作为key,文件内容字符串作为 value
本文采用第二种,鉴于网上将该文件的访问路径写死,本文做里进一步的延伸,即可以自由匹配多个配置文件

思路

提供给微信的访问路径不变 http://域名/项目名/文件名.txt
controller 的 @RequestMapping 方法使用地址传参
根据传参-即文件名字获取对应的值
文件名字和文件内容组成 key-value ,保存在数据库或者缓存里

代码
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;
import java.util.Map;/*** @Title: controller* @Description: 访问微信认证 txt 文件* @Version: v1.0* @Date:2019-04-08 11:36*/
@Controller
public class WeChatTxtController extends BaseController{/*** 微信访问的url 类似于 https://域名/项目名/MP_verify_demodemodemo.txt* 文件内容只是一个字符串* 这里我们将文件内容保存到统一配置中* @param txtName* @return*/@RequestMapping("{txtName}.txt")@ResponseBodypublic String getTxtContent(@PathVariable("txtName") String txtName){//出于安全到考虑,可以对访问该路径对请求进行白名单限制//比如只允许来自微信的域名的请求//当然这部分限制可以放到拦截器或者过滤器中/*** map 的内容如下,可以存储多个搭配:* txt文件名:文件值* txt文件名:文件值*/Map map=null;//这里需要你自己实现,内容存在数据库或者缓存里都行if(map==null){return "error";}else{//查询到以此文件名保存到内容,即查询到正确到正确到文件if( StringUtils.isNotBlank((String)map.get(txtName))){return (String)map.get(txtName);}}return "error";}
}
访问例子说明

比如微信提供的文件是 demo.txt ,文件内容是 123456
那么就请求 http://域名/项目名/demo.txt

多想一步:寻找规律,不用存储?

近期配置了几个新对微信提供对txt文件,发现一个规律
微信提供的 txt 文件名称为 MP_verify_随机字符串.txt
而文档的内容居然和文件名字中的 随机字符串 一样
比如 MP_verify_123456.txt 的内容就是 123456
这样一来,其实可以不对这个文件进行存储,只要需要对访问路径进行处理,直接截取 随机字符串对部分,返回给请求即可
当然,这样是有风险的,万一以后微信改变规则了,估计就傻眼了,所以还是存起来吧.

关于访问微信安全域名认证txt文件访问的通用解决方案相关推荐

  1. 将微信聊天记录转成txt文件的最实用方法

    将微信聊天记录转成txt文件的最实用方法 下载所需软件 获取微信聊天记录的数据库文件 获取打开数据库文件的密码 打开数据库文件 参考链接 下载所需软件 sqlcipher.exe,夜神模拟器,Hash ...

  2. vMix对C盘路径下video.txt文件访问被拒绝怎么办

    vMix对C盘路径下video.txt文件访问被拒绝怎么办 新云小编发现一个问题在安装成功后,软件打不开.弹窗蹦出vmix打开出video.txt访问被拒绝!这下小编无语了.还好新云小编聪明去找了下发 ...

  3. php读取文件中文,PHP读取txt文件中文乱码的解决方案

    $res=glob('*.txt');//读取文件夹内的txt文件 echo '直接输出文件名,中文都乱码,因为这个php脚本的编码为utf-8:'; foreach($res as $value) ...

  4. 错误: 必须限制口令文件读取访问 jmxremote.password 有图示 文件访问权限问题配置

    错误: 必须限制口令文件读取访问 jmxremote.password can happen if the owner of jmxremote.password is not the same as ...

  5. java 资源访问权限,限制Java中的文件访问

    小编典典 使用策略文件的方法如下. 创建一个可以特权使用的Java文件: package egPriv; import java.io.FileReader; import java.io.IOExc ...

  6. 微信小程序上传文件到阿里OSS教程

    前言 (一)开通OSS服务与新建Bucket 开通OSS服务这里省略,新建bucket. (二)设置Bucket属性,后台配置域名 上传文件访问域名 这里我们要在小程序后台配置上传域名(上面的域名是我 ...

  7. 企业微信可信域名个人配置方法,个人添加企业微信可信IP方法

    截止2022年12月11日,目前方法已经失效. 各平台累计浏览量13W左右,估计微信都想不到突然之间怎么这么多人用企业微信,之前验证过的域名还可以正常使用,再新验证的域名大多都已经失效了,感谢大家20 ...

  8. robots.txt文件详解

    我们知道,搜索引擎都有自己的"搜索机器人"(ROBOTS),并通过这些ROBOTS在网络上沿着网页上的链接(一般是http和src链接)不断抓取资料建立自己的数据库. 对于网站管理 ...

  9. 公用计算机管理,如何管理公用计算机和私人计算机的文件访问

    如何管理公用计算机和私人计算机的文件访问 08/07/2014 本文内容 适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchan ...

最新文章

  1. 【项目实战】基于随机森林算法的房屋价格预测模型
  2. 一文带你了解MySQL基础
  3. Butterknife 的简单使用 和 配合 Butterknife的插件 Zelezny
  4. java分隔符的引号,使用分隔符拆分带引号的字符串
  5. Manthan, Codefest 16
  6. 对比linux终端模式和图形模式,Linux知识-2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式...
  7. 马后炮之12306抢票工具(四)--抢票Demo,2014年1月9日终结版
  8. Ubuntu 14.04 / 13.10 / 13.04 / 12.04使用PPA安装NVIDIA GeForce显卡驱动
  9. 阶梯式的岗位技术培训认证体系
  10. 西瓜书+实战+吴恩达机器学习(六)监督学习之逻辑回归 Logistic Regression
  11. 做数据分析时注意事项
  12. python画函数图像 保留_如何使用python的matplotlib画反正切函数图像
  13. 我国的离婚率现状,通过数据的可视化展示,来直观的展现给大家
  14. 一秒钟速算(WINFORM)
  15. seraph_256 写给自己的编程小事
  16. 宝来客分享:大瓜!董事长沈东军举报大舅子,莱绅通灵不“灵”了
  17. LTE系统调试记录12:接收端画星座图
  18. 微信授权与拒绝授权的弹窗处理
  19. Android 刘海屏 适配
  20. could not find java in ES_JAVA_HOME at /root/opt/elastic/elasticsearch-8.1.2/jdk/bin/java

热门文章

  1. 【最优化导论】一维搜索方法案例
  2. 秀米 ueditor 远程抓图到本地 问题结合
  3. Python 爬虫、抓包
  4. 恒久는 變化中의 不變
  5. 常见运放电路分析仿真汇总
  6. Android11.0(R) MTK平台添加新分区
  7. 代理服务器 CCProxy6.64,绿色版,带注册码
  8. 几种抽奖方式之轮盘抽奖
  9. 小福利,教大家用excel函数实现切片器的功能
  10. p值>0.05,统计意义上不显著?