update:简化验证

This commit is contained in:
2021-03-03 16:53:55 +08:00
parent 8214973184
commit 5234d3358b
7 changed files with 27 additions and 18 deletions

View File

@@ -8,11 +8,8 @@ namespace QRCodeService.Infrastructure.Middlewares
{
public class CheckSignAttribute:Attribute
{
public Type ModelType { get; set; }
public CheckSignAttribute(Type type)
public CheckSignAttribute()
{
ModelType = type;
}
}
}

View File

@@ -40,11 +40,10 @@ namespace QRCodeService.Infrastructure.Middlewares
var requestReader = new StreamReader(context.Request.Body);
var requestContent = await requestReader.ReadToEndAsync();
var param = JsonSerializer.Deserialize(requestContent,attribute.ModelType);
var props = attribute.ModelType.GetProperties();
var appid = (int)props.Single(p=>p.Name=="AppId").GetValue(param);
var time = props.Single(p => p.Name == "Time").GetValue(param) as string;
var sign = props.Single(p => p.Name == "Sign").GetValue(param) as string;
var param = JsonSerializer.Deserialize<Dictionary<string,JsonElement>>(requestContent);
var appid = param.Where(kv=>kv.Key.ToLower()=="appid").Single().Value.GetInt32();
var time = param.Where(kv=>kv.Key.ToLower()=="time").Single().Value.GetString();
var sign = param.Where(kv=>kv.Key.ToLower()== "sign").Single().Value.GetString();
var timeDate = time.ToDate("yyyyMMddHHmmss");
if (timeDate == null||Math.Abs((timeDate.Value - DateTime.Now).TotalSeconds) > 60)//时间不同步
{
@@ -60,7 +59,7 @@ namespace QRCodeService.Infrastructure.Middlewares
return;
}
var appKey = app.Appkey;
var signStr = string.Join(null, props.Where(p => p.Name != "Sign").OrderBy(p => p.Name).Select(p => p.GetValue(param).ToString()));
var signStr = string.Join(null, param.Where(kv =>kv.Key.ToLower() != "sign").OrderBy(kv => kv.Key).Select(kv => kv.Value.ToString()));
var checkSign = BitConverter.ToString( (signStr + appKey).ToMD5()).Replace("-","");
if(checkSign.ToLower() != sign.ToLower())
{