【问题标题】:Reset token do not work sometimes?重置令牌有时不起作用?
【发布时间】:2014-06-10 09:14:00
【问题描述】:

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

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

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

编辑 1
我对此进行了测试,发现在 3 分钟之前令牌仍然有效,但在 5 分钟后就不行了。所以我猜它的有效期为5分钟。问题是是否可以增加或删除它。

【问题讨论】:

    标签: asp.net-identity


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-06-21
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      相关资源
      最近更新 更多