在时间段asp net core

时间:2018-06-13 16:03:36

标签: asp.net-identity token asp.net-core-2.0 forgot-password

我正在asp .net核心2.x应用程序中实现忘记密码方案。我遵循了默认行为

  1. 点击登录时忘记密码链接
  2. 输入电子邮件
  3. 发送包含链接/ ResetPassword的电子邮件?code = [某些编码字符串]     ...等
  4. 点击该链接,然后打开“重置密码”屏幕并附上电子邮件, 新密码和确认密码。
  5. 以上所有都是好的,如果用户试图点击步骤3中的链接,系统将拒绝请求说无效令牌!

    我需要按照最佳做法实施更多情侣。

    1. 在一段时间后拒绝请求或使令牌无效。即24小时。
    2. 如果用户尝试超过阈值,则拒绝该请求。即每天3次。
    3. 有任何帮助吗? 在此先感谢。

1 个答案:

答案 0 :(得分:1)

#1已经是这样了,虽然默认值超过24小时,我敢肯定。如果你想改变它:

services.Configure<DataProtectionTokenProviderOptions>(options =>
{
    options.TokenLifespan = TimeSpan.FromDays(1);
});

#2需要一些自定义开发,因为没有内置的方法来限制请求的数量。通常,您需要以某种方式坚持在特定时间为特定帐户提交重置的事实。然后,您可以查询该商店,以确定在您的时间范围内特定帐户是否有超过3次此类尝试。

那就是说,实现它可能不是一个好主意。如果发生某种恶意活动,您最终会阻止实际用户重置密码的尝试。如果你担心机器人会发送垃圾邮件,你最好不要使用验证码和/或使用网络应用程序防火墙。