在使用asp.net身份的mvc网站上,我的用户抱怨有时密码重置功能不起作用。我所做的只是使用GeneratePasswordResetToken(userId)
生成密码重置令牌,并通过链接发送到他们的电子邮件。然后我使用此令牌调用ResetPasswordAsync(userId, token, newPassword)
我无法重现这一点,但我可以证明,有时,在某些用户计算机上,ResetPassword会返回“InvalidToken”。关于这里可能发生什么的任何线索?我在某处看到那些令牌是基于时间的,所以也许它们在一段时间后无效了?
如果是这样,asp.net身份令牌的默认持续时间是什么,可以增加它?
编辑1
我对此进行了测试并检测到在3分钟之前令牌仍然有效,但在5分钟后没有。所以我猜它有效5分钟。问题是,是否可以增加或删除它。
答案 0 :(得分:2)
好的,我刚刚找到了答案。 ApplicationUserManager有UserTokenProvider
我们可以在哪里传递IUserTokenProvider,我们可以设置默认的过期时间:
manager.UserTokenProvider = new DataProtectorTokenProvider<User, int>(dataProtectionProvider.Create("ASP.NET Identity")) { TokenLifespan = TimeSpan.FromDays(1) };