asp.net如何开发微信验证消息功能
发表于:2024-11-13 作者:千家信息网编辑
千家信息网最后更新 2024年11月13日,这篇文章主要介绍了asp.net如何开发微信验证消息功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。验证消息的真实性在MVC Con
千家信息网最后更新 2024年11月13日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安全错误
数据库的锁怎样保障安全
汽车网络安全 定义
国税局做好网络安全
双色球数据库下载
网银数据库设计
美国软件开发工作时间
勉县网络安全知识答题
军营网络安全宣传新闻稿
网络安全等级定级依据
苹果手机网络安全的问题
刀片服务器 尺寸
沂水软件开发有限公司
计算机网络技术需要大量编程吗
移动软件开发课程设计计算器
杭州富优网络技术有限公司
苏州办公系统软件开发价格表
关于互联网科技金融教育的通知
软件开发服务资产
华为通用入门服务器
统筹规划网络安全
重庆软件开发解决方案介绍
怎么把两个数据库整合一个数据库
世界前十大网络安全公司
网络安全法开展情况
事业编考试数据库知识
一个数据库必须包含的部分
里番网络技术有限公司
四川 代理服务器
华为通用入门服务器
汽车电子软件开发有前途吗
云集互联网科技有限公司