重置令牌有时不起作用?

时间:2014-06-09 17:24:12

标签: asp.net-identity

在使用asp.net身份的mvc网站上,我的用户抱怨有时密码重置功能不起作用。我所做的只是使用GeneratePasswordResetToken(userId)生成密码重置令牌,并通过链接发送到他们的电子邮件。然后我使用此令牌调用ResetPasswordAsync(userId, token, newPassword)

我无法重现这一点,但我可以证明,有时,在某些用户计算机上,ResetPassword会返回“InvalidToken”。关于这里可能发生什么的任何线索?我在某处看到那些令牌是基于时间的,所以也许它们在一段时间后无效了?

如果是这样,asp.net身份令牌的默认持续时间是什么,可以增加它?

编辑1
我对此进行了测试并检测到在3分钟之前令牌仍然有效,但在5分钟后没有。所以我猜它有效5分钟。问题是,是否可以增加或删除它。

1 个答案:

答案 0 :(得分:2)

好的,我刚刚找到了答案。 ApplicationUserManager有UserTokenProvider我们可以在哪里传递IUserTokenProvider,我们可以设置默认的过期时间:

manager.UserTokenProvider = new DataProtectorTokenProvider<User, int>(dataProtectionProvider.Create("ASP.NET Identity")) { TokenLifespan = TimeSpan.FromDays(1) };