撤消ASP.NET Identity 2.0中UserTokenProvider生成的令牌

有没有办法撤销ASP NET Identity 2.0中用户管理器生成的电子邮件validation令牌?

上下文
我想让用户可以重新发送确认电子邮件。 为此,我使用以下命令生成一个新令牌: UserManager.GenerateEmailConfirmationTokenAsync(user.Id) ,并使用新生成的令牌发送电子邮件。 不幸的是,当我这样做时,以前生成的令牌仍然有效,有没有办法撤销它们?

示例代码
在UserManager类中:

 manager.UserTokenProvider = new DataProtectorTokenProvider(options.DataProtectionProvider.Create("ASP.NET Identity")); 

在AccountController中:

 var user = await UserManager.FindByEmailAsync("email"); // All generated tokens below will work to confirm the email. // I only want the last token to be valid when confirming the email address. var token1 = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var token2 = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var token3 = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var token4 = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var token5 = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); var result = await UserManager.ConfirmEmailAsync(user.Id, token5); 

还欢迎有关生成的令牌的存储位置以及如何生成这些令牌的信息!

如果您能将此信息发送给我,我将不胜感激。

默认的UserTokenProvider根据用户的SecurityStamp生成令牌,因此在更改之前(例如用户的密码更改时),令牌将始终相同,并保持有效。 因此,如果您想简单地使旧令牌无效,只需调用manager.UpdateSecurityStampAsync()。