自定义电子邮件确认令

时间:2014-07-28 11:18:37

标签: c# asp.net asp.net-identity-2

我正在使用Identity 2.0框架进行用户管理 不幸的是,在我的用例中,使用直接链接无法完成帐户激活/密码重置,因此用户必须从他的电子邮件中复制代码并将其粘贴到网站中。

UserManager的默认GenerateEmailConfirmationTokenAsync方法生成的代码非常长,它跨越大约3行文本。 我试图覆盖此方法,生成更加用户友好的更短代码。这不起作用,因为ConfirmEmailAsync方法总是返回“无效令牌”(此方法根本不会调用GenerateEmailConfirmationTokenAsync方法)。

我不知道如何存储确认码,我更喜欢使用Identity Framework的默认存储机制,而不是手动将其存储在数据库中。

由于Identity 2.0框架是封闭源代码,我不知道如何继续。是否有可能生成自定义(更短)的确认代码,除了我已经做过的事情之外,我应该覆盖哪些方法?

1 个答案:

答案 0 :(得分:14)

ASP.NET Identity使用UserTokenProvider的{​​{1}}生成并验证令牌。基本上它叫:

UserManager

生成令牌和

this.UserTokenProvider.GenerateAsync("Confirmation", this, tUser);

验证它。

因此,您可以实施自己的this.UserTokenProvider.ValidateAsync("Confirmation", token, this, tUser); 或扩展默认值IUserTokenProvider<TUser, TKey>