调用接口,刷新页面验证的Token就会丢失,经过网络查找找到如下方法:
修改program.cs文件,配置EnablePersistAuthorization方法:
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(op =>
{
op.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
op.DocumentTitle = "XXXX系统";
var ftype = typeof(ApiVersionInfo);
foreach (var field in typeof(ApiVersionInfo).GetFields())
{
var fvalue = field.GetValue(ftype)?.ToString();
op.SwaggerEndpoint($"/swagger/{fvalue}/swagger.json", $"版本 {fvalue}");
}
op.EnablePersistAuthorization();
});
}
配置Swagger开启验证:
builder.Services.AddSwaggerGen(op =>
{
op.AddServer(new OpenApiServer() { Url = "https://localhost:7009", Description = "测试服务" });
op.AddServer(new OpenApiServer() { Url = "https://127.0.0.1:7009", Description = "正式服务" });
op.AddSecurityDefinition("Token", new OpenApiSecurityScheme()
{
Description = "请输入token",
Name = "token",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Token"
});
op.AddSecurityRequirement(new OpenApiSecurityRequirement()
{
{
new OpenApiSecurityScheme
{
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Token",
},Scheme = "Token",Name = "Token",In = ParameterLocation.Header
},new List<string>()
}
});
var ftype = typeof(ApiVersionInfo);
foreach (FieldInfo fileld in typeof(ApiVersionInfo).GetFields())
{
var fvalue = fileld.GetValue(ftype)?.ToString();
op.SwaggerDoc(fvalue, new OpenApiInfo
{
Version = fvalue,
Title = "接口平台 API ",
Description = $"API版本描述,{fvalue}版本"
});
}
var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
//op.IncludeXmlComments(xmlFilename);
op.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename), true);
});