109 lines
4.7 KiB
C#
109 lines
4.7 KiB
C#
|
|
using System.Text;
|
|||
|
|
using System.Threading.RateLimiting;
|
|||
|
|
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
|||
|
|
using Microsoft.AspNetCore.RateLimiting;
|
|||
|
|
using Microsoft.IdentityModel.Tokens;
|
|||
|
|
using SupplierManager.Common;
|
|||
|
|
using SupplierManager.Models;
|
|||
|
|
|
|||
|
|
namespace SupplierManager
|
|||
|
|
{
|
|||
|
|
public class Program
|
|||
|
|
{
|
|||
|
|
public static void Main(string[] args)
|
|||
|
|
{
|
|||
|
|
var builder = WebApplication.CreateBuilder(args);
|
|||
|
|
|
|||
|
|
// Add services to the container.
|
|||
|
|
|
|||
|
|
builder.Services.AddControllers();
|
|||
|
|
builder.Services.AddScoped<AgentApprovalSystemContext>();
|
|||
|
|
|
|||
|
|
builder.Services.AddCors(options =>
|
|||
|
|
{
|
|||
|
|
options.AddPolicy(name: "Vue3",
|
|||
|
|
policy =>
|
|||
|
|
{
|
|||
|
|
//policy.WithOrigins("http://localhost:5180",
|
|||
|
|
// "http://localhost:8809/",
|
|||
|
|
// "http://www.contoso.com",
|
|||
|
|
// "http://new.uts-data.com:6688/", "http://new.uts-data.com")
|
|||
|
|
policy
|
|||
|
|
.AllowAnyOrigin()
|
|||
|
|
.AllowAnyHeader()
|
|||
|
|
.AllowAnyMethod();
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
|
|||
|
|
//builder.Services.AddRateLimiter(options =>
|
|||
|
|
//{
|
|||
|
|
// options.AddTokenBucketLimiter(policyName: "token_bucket", tokenBucketOptions =>
|
|||
|
|
// {
|
|||
|
|
// tokenBucketOptions.TokenLimit = 100;//Ͱ<><CDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵĶ<C5B5><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻᱻ<C6BB><E1B1BB><EFBFBD><EFBFBD>
|
|||
|
|
// tokenBucketOptions.ReplenishmentPeriod = TimeSpan.FromSeconds(10);//<2F><><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// tokenBucketOptions.TokensPerPeriod = 100;//ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// tokenBucketOptions.QueueLimit = 90;//<2F><>Ͱ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣨token=0<><30>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD>
|
|||
|
|
// tokenBucketOptions.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
|
|||
|
|
// tokenBucketOptions.AutoReplenishment = true;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊfalse<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD> TokenBucketRateLimiter.TryReplenish<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// });
|
|||
|
|
//});
|
|||
|
|
builder.Services.AddAuthorization();
|
|||
|
|
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
|||
|
|
.AddJwtBearer(option =>
|
|||
|
|
{
|
|||
|
|
string DefaultKey = "B,EZipeApY3cNj3~4RP0UMR=H>9x8.1!E85wmZ]]py2d$Y?5";
|
|||
|
|
var sec = Encoding.UTF8.GetBytes(builder.Configuration["JWT:SecretKey"] ?? DefaultKey);
|
|||
|
|
|
|||
|
|
option.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
|
|||
|
|
{
|
|||
|
|
ValidateIssuer = true,
|
|||
|
|
ValidateAudience = true,
|
|||
|
|
ValidateLifetime = true,
|
|||
|
|
|
|||
|
|
ValidateIssuerSigningKey = true,
|
|||
|
|
ValidIssuer = builder.Configuration["JwT:Issuer"],
|
|||
|
|
ValidAudience = builder.Configuration["JwT:Audience"],
|
|||
|
|
IssuerSigningKey = new SymmetricSecurityKey(sec)
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
option.Events = new JwtBearerEvents
|
|||
|
|
{
|
|||
|
|
OnMessageReceived = context =>
|
|||
|
|
{
|
|||
|
|
var token = context.Request.Headers["token"].FirstOrDefault();
|
|||
|
|
if (string.IsNullOrEmpty(token))
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD> token ͷ<><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Authorization ͷ<><CDB7>
|
|||
|
|
token = context.Request.Headers["Authorization"].FirstOrDefault()?.Split(" ").Last();
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD> token<65><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD> HttpContext <20><>
|
|||
|
|
if (!string.IsNullOrEmpty(token))
|
|||
|
|
{
|
|||
|
|
context.Token = token;
|
|||
|
|
}
|
|||
|
|
return Task.CompletedTask;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
});
|
|||
|
|
var app = builder.Build();
|
|||
|
|
|
|||
|
|
// Configure the HTTP request pipeline.
|
|||
|
|
|
|||
|
|
app.UseCors("Vue3");
|
|||
|
|
app.UseAuthentication(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
|||
|
|
app.UseAuthorization(); // ʹ<><CAB9><EFBFBD><EFBFBD>Ȩ<EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
|||
|
|
|
|||
|
|
app.UseStaticFiles();
|
|||
|
|
app.MapControllers();
|
|||
|
|
//app.UseRateLimiter(new Microsoft.AspNetCore.RateLimiting.RateLimiterOptions()
|
|||
|
|
//{
|
|||
|
|
// RejectionStatusCode = 500
|
|||
|
|
//});
|
|||
|
|
|
|||
|
|
StaticData.GetWebAPIMethod();
|
|||
|
|
app.Run();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|