这是我在 Program.cs 类中使用的代码。
builder.Services.Configure<DataProtectionTokenProviderOptions>(options =>
{
options.TokenLifespan = TimeSpan.FromMinutes(30);
});
我使用下面的代码片段来生成确认令牌:
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
但是,当我尝试使用
验证令牌时 var varifyAccount = await _userManager.ConfirmEmailAsync(user, token);
如果我在 10 分钟后访问它,它会返回无效令牌。
usermanager.GenerateEmailConfirmationTokenAsync
方法将使用EmailToken提供程序来生成令牌。并且EmailToken提供程序的默认值应该是您在program.cs中注册身份时使用的令牌提供程序。因此,如果您想修改令牌生存期,您应该修改令牌提供者的令牌生命周期属性。
以下是您可以参考的示例:
builder.Services.AddDefaultIdentity<WebApplication7User>(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<WebApplication7Context>()
.AddDefaultTokenProviders()
.AddTokenProvider<DataProtectorTokenProvider<WebApplication7User>>(TokenOptions.DefaultEmailProvider);
builder.Services.Configure<DataProtectionTokenProviderOptions>(options => options.TokenLifespan = TimeSpan.FromMinutes(3));