Yuebon.NetCore/Yuebon.Commons/Helpers/SignHelper.cs
(开头部分) 6KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.AspNetCore.Http;
using System.Collections.Specialized;
using System.IO;
using System.Text;
using System.Web;
using Yuebon.Commons.Cache;
using Yuebon.Commons.Encrypt;
using Yuebon.Commons.Extensions;
using Yuebon.Commons.Json;
using Yuebon.Commons.Result;
using Yuebon.Commons.Options;
namespace Yuebon.Commons.Helpers
{
/// <summary>
/// 签名验证自定义类
/// </summary>
public class SignHelper
{
/// <summary>
/// 全局过滤器验证签名
/// </summary>
/// <param name="httpContext"></param>
/// <returns></returns>
public static CommonResult CheckSign(HttpContext httpContext)
{
CommonResult result = new CommonResult();
//从http请求的头里面获取参数
var request = httpContext.Request;
var appId = ""; //客户端应用唯一标识
string nonce = "";//随机字符串
var signature = ""; //参数签名,去除空参数,按字母倒序排序进行Md5签名 为了提高传参过程中,防止参数被恶意修改,在请求接口的时候加上sign可以有效防止参数被篡改
long timeStamp; //时间戳, 校验5分钟内有效
try
{
appId = request.Headers["appId"].SingleOrDefault();
nonce = request.Headers["nonce"].SingleOrDefault();
timeStamp = Convert.ToInt64(request.Headers["timeStamp"].SingleOrDefault());
signature = request.Headers["signature"].SingleOrDefault();
}
catch (Exception ex)
{
result.ErrCode = "40007";
result.ErrMsg = "签名参数异常:" + ex.Message;
return result;
}
//appId是否为可用的
AllowCacheApp allowCacheApp = VerifyAppId(appId);
if (string.IsNullOrEmpty(allowCacheApp.AppId))
{
result.ErrCode = "40008";
result.ErrMsg = "AppId不被允许访问:" + appId;
return result;
}
//判断timespan是否有效,请求是否超时
DateTime tonow= timeStamp.UnixTimeToDateTime();
var expires_minute = tonow.Minute - DateTime.Now.Minute;
if (expires_minute > 2 || expires_minute < -2)
后面还有 112 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。