前言
今天,记录一篇啼笑皆非的问题。
昨晚上在做微信公众号开发时,遇到了个解决好久的问题,即:微信公众号上配置服务器信息之后,回调服务器接口总是报错token验证失败。
剧透(这么几个原因 ):
- 项目重构一下
- 拦截器没有放开(这是最主要的原因)
- 服务器中部署的项目不是最新的,重新重构部署
原因分析
我的接口信息如下:
/**
* 微信公众号验证接口
* @param signature
* @param timestamp
* @param nonce
* @param echostr
* @return
*/
@GetMapping("/validationWeCat")
public String validationWeCat(String signature, String timestamp, String nonce, String echostr){
return echostr;
}
这个接口要是还有问题的话,谁也说不过去吧。。。
但是发到服务器上之后,他就是有问题,问题如下:
这个问题看了下,一般出现这个问题的原因就是:拦截器
于是我检查了下拦截器,代码是没有问题的:
filterChainDefinitionMap.put("/wecat/**", "anon");
该控制器的拦截也是wecat
:
@Api(tags = "微信小程序控制器")
@RestController
@RequestMapping("/wecat")
@Slf4j
public class WeCatController {
//业务代码
}
主要是,该控制器下的另一个接口,调用却没有任何问题,特别奇怪:
接口调用如下:
后来怎么检查都没有用,因为无处可改。
然后将代码在本地跑起来,调用接口的时候显示404。找半天原因,idea
重启,nacos
重启,getway
重启,system
重启,业务模块
重启,都然并卵。
最后将项目重构了下,接口本地调通了。然后服务器上还是不行;
因为我本地没有配置docker
,所以每次发布都要麻烦一下同事。
让同事重新部署,调用接口,失败!(报错Token
失效)
让同事重构,重新部署,调用接口,失败!(报错Token
失效)
纳闷中……
后来同事说了句话,差点儿没给我气死。
....很无语。
重新部署,问题解决。