我需要在ASP.NET Identity 2中自定义GenerateChangePhoneNumberToken()和GenerateEmailConfirmationToken()。 怎么实现呢? 我需要生成自定义令牌。我可以这样做吗?
答案 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方法,以确保验证正常运行