Asp.net core 发布后禁止在生产中使用招摇过市UI 403
我在Asp.net core 发布后禁止在生产中使用招摇过市UI 403,asp.net-core,swagger,swashbuckle.aspnetcore,Asp.net Core,Swagger,Swashbuckle.aspnetcore,我在Asp.Net 5.0WebApi上安装了swashback.AspNetCore6.1.4 API使用Microsoft.AspNetCore.Authentication.JwtBearer5.0.6进行保护 我添加了一个带有HTTPPOST端点[AllowAnonymous]过滤器的LoginController,以生成初始JWT 在本地运行时,我可以使用Swagger UI调用它并生成一个令牌。但是,如果我发布到我们的预生产服务器进行进一步测试,那么在通过swagger调用登录端点时
Asp.Net 5.0
WebApi上安装了swashback.AspNetCore
6.1.4
API使用Microsoft.AspNetCore.Authentication.JwtBearer5.0.6
进行保护
我添加了一个带有HTTPPOST
端点[AllowAnonymous]
过滤器的LoginController
,以生成初始JWT
在本地运行时,我可以使用Swagger UI调用它并生成一个令牌。但是,如果我发布到我们的预生产服务器进行进一步测试,那么在通过swagger调用登录端点时,我们会得到一个403禁止的
错误?不过我可以通过邮递员成功地打电话给它
swagger ui
配置如下:int-ehStartup.cs
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v2", new OpenApiInfo { Title = "Services.WebApi", Version = "v2" });
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
var securitySchema = new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\".",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.Http,
Scheme = "bearer",
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Bearer"
}
};
c.AddSecurityDefinition("Bearer", securitySchema);
var securityRequirement = new OpenApiSecurityRequirement
{
{ securitySchema, new[] { "Bearer" } }
};
c.AddSecurityRequirement(securityRequirement);
});
然后在配置方法中
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
app.UseHttpsRedirection();
app.UseCors();
}
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v2/swagger.json", "Services.WebApi ASP NET Core 5 v2"));
有人能告诉我问题出在哪里吗
编辑
我还可以确认,如果我通过postman(到预生产服务器URL)生成JWT,然后将其添加到UI顶部的Swagger UI授权中
调用其中一个HTTPGGET端点将成功返回
调用POST api/登录端点仍然失败(尽管JWT已添加到该端点)
你能给我们看看应用程序之前调用的中间件吗。UseSwagger?是的,没有问题,将立即更新。好的,我从网络输出中计算出来。Swagger默认添加内容类型:application/json;元数据=最小值;odata.streaming=true
请求(在本地工作)。但是在预生产服务器上导致403。将此更改为内容类型:application/json
解决了此问题。也感谢您抽出时间提供帮助:)