WebAPI签名

/// <summary>
        /// API签名验证方法
        /// </summary>
        /// <param name="keys">参数集合,不包含appId,sign参数</param>
        /// <param name="secret">密钥</param>
        /// <returns></returns>
        public static string GetSign(Dictionary<string, string> keys, string secret)
        {
            string sign = null;
            var exculeKeys = new[] { "appid", "sign" };
            if (string.IsNullOrEmpty(secret)) return sign;
            keys = keys.ToDictionary(a => a.Key.ToLower(), a => a.Value);
            var paramKeys = keys.Where(a => !exculeKeys.Contains(a.Key)).OrderBy(a => a.Key).ToDictionary(a => a.Key, a => a.Value);
            string stringA = string.Join("&", paramKeys.Select(a => $"{a.Key}={a.Value}")) + secret;
            sign = MD5(stringA.Trim()).ToUpper();
            return sign;
        }

调用

[HttpPost]
        [Route("Login")]
        public IActionResult Login(UserInfo req)
        {
            var json = new Dictionary<string, object>();            
            try
            {
                //表单提交获取请求值 AddParameter
                var allKeys = new Dictionary<string, string>();                
                HttpRequest request = HttpContext.Request;
                if (request.ContentLength > 0)
                {
                    var collection = request.Form;
                    foreach (string key in collection.Keys)
                    {
                        if (!allKeys.ContainsKey(key))
                        {
                            allKeys.Add(key.Trim(), collection[key]);
                        }
                    }
                }
                if (!allKeys.ContainsKey("sign"))
                {
                    return Utils.ToResult(json, "sign不能为空!");
                }
                string sign = Utils.GetSign(allKeys, Utils.Secret);
                if (allKeys.ContainsKey("sign"))
                {
                    string dicSign = (string)allKeys["sign"];
                    if (sign != dicSign)
                    {
                        return Utils.ToResult(json, "验证签名失败!");
                    }
                }                
                json["name"] = req.name;
                json["pwd"] = req.pwd;
                json["sign"] = sign;
                return Utils.ToSuccessResult(json, "登陆成功!");
            }
            catch (Exception ex)
            {
                Utils.PrintLog("登陆异常:" + ex.Message, "Login");
                return Utils.ToResult(json, "登陆异常:" + ex.Message);
            }
        }

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值