如何在ASP.NET标识中自定义GenerateChangePhoneNumberToken?

时间:2016-01-16 08:09:15

标签: asp.net-mvc asp.net-identity

我需要在ASP.NET Identity 2中自定义GenerateChangePhoneNumberToken()和GenerateEmailConfirmationToken()。 怎么实现呢? 我需要生成自定义令牌。我可以这样做吗?

2 个答案:

答案 0 :(得分:0)

不,你不能自己替换完整的ASP.NET身份代码。根据{{​​3}}使用6位数生成和验证令牌。您可以参考源代码RFC 6238

答案 1 :(得分:0)

是的,您可以重新实现GenerateChangePhoneNumberToken,因为它被定义为Usermanager类中的虚方法。 顺便说一下,您必须更改类Rfc6238Authentication中的代码以自定义它已编码的主要功能,但您无法更改生成的代码。 要实现这一目标,您应该将this课程(我的意思是复制/粘贴)带到您的项目并根据需要进行修改。 我想你可能需要改变otp的生命时间。我做到了。

作为线索: rfc6238中的实现有一个名为_timeStep的私有静态字段,默认值为3分钟:

.top {
    display: grid;
    grid-template-columns: 3fr 1fr;
    grid-gap: 10px;
    grid-row-gap: 30px;
}

您可以将其行为更改为属性(删除只读):

private static readonly TimeSpan _timestep = TimeSpan.FromMinutes(3);

并使GenerateCode方法更具动态性:

    private static TimeSpan _timestep = TimeSpan.FromMinutes(3);

请记住,您必须将timeStep传递给ValidateCode方法,以确保验证正常运行