Td.Weixin.Public/Common/EntrySign.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.Configuration;
using System.Configuration;

namespace Td.Weixin.Public.Common
{
    /// <summary>
    /// 接入验证
    /// </summary>
    public class EntrySign
    {
        private static void ParseMetadata(EntrySign es)
        {
            if (es == null)
                return;

            var ps = es.GetType().GetProperties();
            foreach (var p in ps)
            {
                var context = HttpContext.Current;
                if (context == null)
                    return;
                p.SetValue(es, context.Request[p.Name], null);
            }
        }

        /// <summary>
        /// 检查当前请求是否是接入验证请求。
        /// 如果正确,请执行(实例).Response()方法。
        /// <para>如果为false,则表示已经成功接入,本次请求为消息处理请求。</para>
        /// </summary>
        /// <returns></returns>
        public static bool IsEntryCheck()
        {
            return "GET".Equals(HttpContext.Current.Request.HttpMethod);
        }

        /// <summary>
        /// 检查当前请求是否带有签名验证,一般情况都为true(表示需要验证。当然如果不考虑安全,也可以不验证)。
        /// <para>如果为true,则表示需要验证,此时请执行 EntrySign.ParseFromContext()获取实例然后执行 (实例).Check()方法以检测签名是否正确。
        /// </para>
        /// </summary>
        /// <returns></returns>
        public static bool IsSignCheckRequest()
        {
            return string.IsNullOrEmpty(HttpContext.Current.Request["signature"]);
        }

        /// <summary>
        /// 请上下文获取验证数据。
        /// </summary>
        /// <returns></returns>
        public static EntrySign ParseFromContext()
        {
            var ret = new EntrySign();
            ParseMetadata(ret);
            return ret;
后面还有 58 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。