GenerateEmailConfirmationToken() 到底在做什么?

What is GenerateEmailConfirmationToken() doing exactly?

我有两个关于 ASP.Identity 2.0 "GenerateEmailConfirmationToken/GenerateEmailConfirmationTokenAsync" 方法的问题。

// Generate token
var token = Url.Encode(await UserManager.GenerateEmailConfirmationTokenAsync(user.Id));
  1. 这个令牌是否存储在数据库中?我想它应该。但在哪个领域?我只是在用户 table 上找到 "PasswordHash" 和 "SecurityStamp"。两者似乎都不匹配。
  2. 我的印象是,一旦我生成电子邮件令牌,用户 table 的 EmailConfirmed 字段将被设置为 false。但它仍然是真的。那么,如果相应的用户帐户保持确认,则创建令牌的目的是什么?或者换句话说:我需要做什么才能生成新令牌并将帐户设置为未确认?

总结评论中的讨论:令牌没有存储在任何地方——它们是从 SecruityStamp 加密生成的(不确定生成的确切过程),当它们返回时,可以解密和比较它们.

至于EmailConfirmed字段-这是给你维护和照顾的。您需要手动拒绝没有确认电子邮件的用户登录。当电子邮件确认确实通过时,您需要设置标志。