AGSSbackend/AGSS/Program.cs

99 lines
2.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AGSS.Models;
using AGSS.Models.Template;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
var builder = WebApplication.CreateBuilder(args);
var domain = builder.Configuration["Auth0:Domain"];
var audience =builder.Configuration["Auth0:Audience"];
//数据库配置(PGSQL)
builder.Services.AddDbContext<DBContext>(opt =>
opt.UseNpgsql(builder.Configuration.GetConnectionString("DBContext")));
//鉴权配置
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = domain;
options.Audience = audience;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidIssuer = domain,
ValidAudience = audience
};
options.Events = new JwtBearerEvents
{
OnChallenge = context =>
{
context.HandleResponse();
context.Response.StatusCode = 200;
context.Response.ContentType = "application/json";
return context.Response.WriteAsJsonAsync(new ReturnTemplate(401,"你提供了一个错误的Token所以我们无法验证你的身份唔......",null));
}
};
});
builder.Services.AddAuthorization();
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
// 配置Swagger
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
//自定义中间件 把404变成200
app.Use(async (context, next) =>
{
await next(); // 先执行后续中间件
// 如果响应是 404 且未修改过
if (context.Response.StatusCode == 404 && !context.Response.HasStarted)
{
context.Response.StatusCode = 200; // 改为 200
context.Response.ContentType = "application/json";
// 自定义响应内容
await context.Response.WriteAsJsonAsync(new ReturnTemplate(404,"未能找到资源吖!",null));
}
});
//控制器路由
app.MapControllers();
app.Run();