update:简化验证
This commit is contained in:
@@ -52,7 +52,7 @@ namespace QRCodeService.Controllers.Api
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[CheckSign(typeof(CreateLinkModel))]
|
[CheckSign]
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IActionResult> Create(CreateLinkModel input)
|
public async Task<IActionResult> Create(CreateLinkModel input)
|
||||||
{
|
{
|
||||||
@@ -62,7 +62,7 @@ namespace QRCodeService.Controllers.Api
|
|||||||
{
|
{
|
||||||
return BadRequest();
|
return BadRequest();
|
||||||
}
|
}
|
||||||
return Ok(link.ShortCode);
|
return Created($"{option.Value.BaseUrl}r/{link.ShortCode}",link.ShortCode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,11 +37,12 @@ namespace QRCodeService.Controllers
|
|||||||
}
|
}
|
||||||
var t = DateTime.Now.ToString("yyyyMMddHHmmss");
|
var t = DateTime.Now.ToString("yyyyMMddHHmmss");
|
||||||
var sign = BitConverter.ToString($"{t}{app.Appkey}".ToMD5()).Replace("-", "");
|
var sign = BitConverter.ToString($"{t}{app.Appkey}".ToMD5()).Replace("-", "");
|
||||||
link.FullUrl = QueryHelpers.AddQueryString(link.FullUrl, new Dictionary<string, string> {
|
ViewBag.FullUrl = QueryHelpers.AddQueryString(link.FullUrl, new Dictionary<string, string> {
|
||||||
{ "s",sign },
|
{ "s",sign },
|
||||||
{ "t",t}
|
{ "t",t}
|
||||||
});
|
});
|
||||||
return View(link);
|
|
||||||
|
return View();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,11 +8,8 @@ namespace QRCodeService.Infrastructure.Middlewares
|
|||||||
{
|
{
|
||||||
public class CheckSignAttribute:Attribute
|
public class CheckSignAttribute:Attribute
|
||||||
{
|
{
|
||||||
public Type ModelType { get; set; }
|
public CheckSignAttribute()
|
||||||
|
|
||||||
public CheckSignAttribute(Type type)
|
|
||||||
{
|
{
|
||||||
ModelType = type;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,11 +40,10 @@ namespace QRCodeService.Infrastructure.Middlewares
|
|||||||
var requestReader = new StreamReader(context.Request.Body);
|
var requestReader = new StreamReader(context.Request.Body);
|
||||||
|
|
||||||
var requestContent = await requestReader.ReadToEndAsync();
|
var requestContent = await requestReader.ReadToEndAsync();
|
||||||
var param = JsonSerializer.Deserialize(requestContent,attribute.ModelType);
|
var param = JsonSerializer.Deserialize<Dictionary<string,JsonElement>>(requestContent);
|
||||||
var props = attribute.ModelType.GetProperties();
|
var appid = param.Where(kv=>kv.Key.ToLower()=="appid").Single().Value.GetInt32();
|
||||||
var appid = (int)props.Single(p=>p.Name=="AppId").GetValue(param);
|
var time = param.Where(kv=>kv.Key.ToLower()=="time").Single().Value.GetString();
|
||||||
var time = props.Single(p => p.Name == "Time").GetValue(param) as string;
|
var sign = param.Where(kv=>kv.Key.ToLower()== "sign").Single().Value.GetString();
|
||||||
var sign = props.Single(p => p.Name == "Sign").GetValue(param) as string;
|
|
||||||
var timeDate = time.ToDate("yyyyMMddHHmmss");
|
var timeDate = time.ToDate("yyyyMMddHHmmss");
|
||||||
if (timeDate == null||Math.Abs((timeDate.Value - DateTime.Now).TotalSeconds) > 60)//时间不同步
|
if (timeDate == null||Math.Abs((timeDate.Value - DateTime.Now).TotalSeconds) > 60)//时间不同步
|
||||||
{
|
{
|
||||||
@@ -60,7 +59,7 @@ namespace QRCodeService.Infrastructure.Middlewares
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var appKey = app.Appkey;
|
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("-","");
|
var checkSign = BitConverter.ToString( (signStr + appKey).ToMD5()).Replace("-","");
|
||||||
if(checkSign.ToLower() != sign.ToLower())
|
if(checkSign.ToLower() != sign.ToLower())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="9.0.0" />
|
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="9.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.1" NoWarn="NU1605" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.1" NoWarn="NU1605" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.1" NoWarn="NU1605" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="5.0.1" NoWarn="NU1605" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="5.0.3" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.3" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.3" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.3">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.3">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ namespace QRCodeService
|
|||||||
public void ConfigureServices(IServiceCollection services)
|
public void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
//提供等待界面优化用户体验
|
//提供等待界面优化用户体验
|
||||||
services.AddControllersWithViews();
|
services.AddControllersWithViews().AddRazorRuntimeCompilation();
|
||||||
services.AddSwaggerGen(c =>
|
services.AddSwaggerGen(c =>
|
||||||
{
|
{
|
||||||
c.SwaggerDoc("v1", new OpenApiInfo { Title = "QRCodeService", Version = "v1" });
|
c.SwaggerDoc("v1", new OpenApiInfo { Title = "QRCodeService", Version = "v1" });
|
||||||
|
|||||||
@@ -3,18 +3,29 @@
|
|||||||
*@
|
*@
|
||||||
@{
|
@{
|
||||||
}
|
}
|
||||||
@model QRCodeService.Application.Queries.Link
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
<style>
|
||||||
|
body{
|
||||||
|
margin:0;
|
||||||
|
padding:0;
|
||||||
|
border:0;
|
||||||
|
height:100vh;
|
||||||
|
width:100%;
|
||||||
|
display:flex;
|
||||||
|
justify-content:center;
|
||||||
|
align-items:center;
|
||||||
|
font-size:3em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div>
|
<div>
|
||||||
loading...
|
loading...
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
location.href = "@Html.Raw(Model.FullUrl)"
|
location.href = "@Html.Raw(ViewBag.FullUrl as string)";
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user