如何修改ASP.NET Core 8中Swagger生成的Bearer Token的expiresIn值
修改ASP.NET Core 8中AddIdentityApiEndpoints生成的Bearer Token过期时间
无需重构现有代码,只需通过配置BearerTokenOptions即可修改Token的过期时间。AddIdentityApiEndpoints底层使用该选项控制Bearer Token的有效期,默认值为3600秒(1小时)。
具体修改步骤
在AddIdentityApiEndpoints的配置代码后,添加Token过期时间的配置:
builder.Services.AddIdentityApiEndpoints<IdentityUser>() .AddEntityFrameworkStores<DataContext>(); // 配置Bearer Token过期时间,替换为你需要的时长 builder.Services.Configure<BearerTokenOptions>(options => { // 示例:设置Token有效期为2小时(对应expiresIn为7200秒) options.TokenExpiration = TimeSpan.FromHours(2); });
修改后的完整Program.cs关键片段
public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Logging.AddLog4Net(); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(options => { options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme { In = ParameterLocation.Header, Name = "Authorization", Type = SecuritySchemeType.ApiKey }); options.OperationFilter<SecurityRequirementsOperationFilter>(); }); builder.Services.AddDbContext<DataContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddAuthorization(); builder.Services.AddIdentityApiEndpoints<IdentityUser>() .AddEntityFrameworkStores<DataContext>(); // 新增Token过期时间配置 builder.Services.Configure<BearerTokenOptions>(options => { options.TokenExpiration = TimeSpan.FromHours(2); }); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment() || app.Environment.IsProduction()) { app.UseSwagger(); app.UseSwaggerUI(); } app.MapIdentityApi<IdentityUser>(); // We enforce HTTPS on WAF. Enforcing it here as well causes a redirect loop. //app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); }
配置生效后,调用认证端点获取的Bearer Token的expiresIn值会自动更新为设置的时长(示例中为7200秒)。
内容的提问来源于stack exchange,提问作者mrcoulson
相关产品推荐
相关产品推荐

