15
有沒有辦法撤銷例如用戶管理器在ASP NET Identity 2.0中生成的電子郵件確認令牌?
撤銷在ASP.NET身份2.0中由UserTokenProvider生成的令牌
語境
我想給用戶重新發送一個確認郵件的可能性。要做到這一點,我生成一個新的令牌:UserManager.GenerateEmailConfirmationTokenAsync(user.Id)
,併發送一個電子郵件與新生成的令牌。不幸的是,當我這樣做以前生成的令牌仍然工作,有沒有辦法撤銷他們?
實施例代碼
在的UserManager類:
manager.UserTokenProvider = new DataProtectorTokenProvider<ApplicationUser>(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);
約的存儲位置信息所生成的令牌和如何生成這些令牌也歡迎!
如果您能將此信息發送給我,我將不勝感激。
謝謝@HaoKung確實有效。對於需要更多有關SecurityStamp的工作信息的人,請查看** [本答案](http://stackoverflow.com/questions/19487322/what-is-asp-net-identitys-iusersecuritystampstoretuser-interface/19505060#19505060)* *也來自Hao Kung。 –
@HaoKung我創建了多個令牌,並發現它們都不相同,並確認SecurityStamp從未改變過。我很困惑。它如何從SecurityStamp生成不變的令牌,以及所有這些不同的令牌如何工作? – Matthew
令牌中不僅有郵票,它的自簽名幷包含令牌中的過期時間,因此如果您多次調用該令牌,它將不會生成相同的令牌。如果您希望它僅對安全印記保持穩定,則可以編寫自己的令牌提供程序。 –