asp.net如何开发微信验证消息功能
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍了asp.net如何开发微信验证消息功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。验证消息的真实性在MVC Con
千家信息网最后更新 2025年01月20日asp.net如何开发微信验证消息功能
这篇文章主要介绍了asp.net如何开发微信验证消息功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
验证消息的真实性
在MVC Controller所在项目中添加过滤器,在过滤器中重写
public override void OnActionExecuting(ActionExecutingContext filterContext)方法
新建数据模型
注:服务器接收消息时,不再是signature而是msg_signature
微信服务器推送消息到服务器的HTTP请求报文示例
POST /cgi-bin/wxpush? msg_signature=477715d11cdb4164915debcba66cb864d751f3e6×tamp=1409659813&nonce=1372623149 HTTP/1.1
Host: qy.weixin.qq.com
方法重写,实现对消息的验证
调用微信接入时验证的方法,不过参数需要小改动一下,采用新建的数据模型
在Action方法或在Controller上添加过滤器属性
代码示例
Model
////// 微信推送消息模型 /// public class WeChatMsgRequestModel { public string timestamp { get; set; } public string nonce { get; set; } public string msg_signature { get; set; } }
Filter
public class WeChatRequestValidAttribute : ActionFilterAttribute { private const string Token = "StupidMe"; public override void OnActionExecuting(ActionExecutingContext filterContext) { //参数适配 Model.FormatModel.WeChatMsgRequestModel model = new Model.FormatModel.WeChatMsgRequestModel() { nonce= filterContext.HttpContext.Request.QueryString["nonce"],msg_signature= filterContext.HttpContext.Request.QueryString["msg_signature"],timestamp= filterContext.HttpContext.Request.QueryString["timestamp"] }; //验证 if (CheckSignature(model)) { base.OnActionExecuting(filterContext); } } private bool CheckSignature(Model.FormatModel.WeChatMsgRequestModel model) { string signature, timestamp, nonce, tempStr; //获取请求来的参数 signature = model.msg_signature; timestamp = model.timestamp; nonce = model.nonce; //创建数组,将 Token, timestamp, nonce 三个参数加入数组 string[] array = { Token, timestamp, nonce }; //进行排序 Array.Sort(array); //拼接为一个字符串 tempStr = String.Join("", array); //对字符串进行 SHA1加密 tempStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tempStr, "SHA1").ToLower(); //判断signature 是否正确 if (tempStr.Equals(signature)) { return true; } else { return false; } } }
Controller Code
////// 日志助手 /// private static Common.LogHelper logger = new Common.LogHelper(typeof(HomeController)); [Filters.WeChatRequestValid] public void Valid(Model.FormatModel.WeChatMsgRequestModel model) { if (ModelState.IsValid) { try { //判断是否是POST请求 if (HttpContext.Request.HttpMethod.ToUpper() == "POST") { //从请求的数据流中获取请求信息 using (Stream stream = HttpContext.Request.InputStream) { byte[] postBytes = new byte[stream.Length]; stream.Read(postBytes, 0, (int)stream.Length); string postString = System.Text.Encoding.UTF8.GetString(postBytes); Handle(postString,model); } } } catch (Exception ex) { logger.Error("发生异常,异常信息:" + ex.Message + ex.StackTrace); } } }
感谢你能够认真阅读完这篇文章,希望小编分享的"asp.net如何开发微信验证消息功能"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
消息
验证
参数
方法
篇文章
数据
服务器
模型
过滤器
服务
功能
发微
信息
字符
字符串
数组
示例
推送
三个
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江信息化软件开发服务应用
数据库设计职业规划
企业网络安全应急处置预案
数据库项目实践训练
web服务器的移植
乐山软件开发报价
数据库系统实现第七章
手机wps数据库的建立
虚拟服务器同义词
医学国外常用的数据库有哪些
怎么把数据传到数据库
德勤软件开发招聘
网络技术研究院 刘传昌
2022年山东单招网络技术操作
mysql远程服务器备份
什么是数据库工具
最新linux数据库用的是什么
思科网络技术第一章
哪个不是广义上的数据库
服务器的网络防护软件
爱奇艺视频软件开发者
db2数据库劣势
云南大学网络安全大赛
win输入网络安全凭据
肿瘤在线数据库分析
导出百度云盘数据库
网络安全工具收纳好物
尚米网络技术知乎
用数据库显示商品
岳阳正规软件开发报价