虚拟主机重新启动并丢失令牌验证



我在使用令牌确认电子邮件的过程中遇到了一些问题,问题似乎是令牌在真正过期之前变得无效。从某些测试来看,似乎经过一段时间后,虚拟主机会自行关闭,并且当它重新启动令牌时,令牌变得无效。处理令牌创建和验证的服务是Scoped。有没有办法防止令牌在实际到期日期之前过期?

用户服务:

public async Task<CreateUserResponse> CreateUser(User user)
{
var res = await _userManager.CreateAsync(user);
var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);
return new CreateUserResponse
{
User = user,
Token = token.UrlSafeEncode()
};
}
// token confirmation in other method:
var res = await _userManager.ConfirmEmailAsync(user, token.UrlSafeDecode());

启动:

services.AddIdentity<User, IdentityRole>(config => { config.SignIn.RequireConfirmedEmail = true; })
.AddRoleManager<RoleManager<IdentityRole>>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders();

在重新启动时存在持久身份验证 cookie 失效的问题。也许相关?解决方案是保留数据保护密钥,以便它在重新启动(以及跨多个实例(后继续存在。

https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview?view=aspnetcore-2.2

最新更新