在使用asp.net登录5次失败后,如何锁定用户帐户30分钟?

时间:2011-05-17 04:37:03

标签: c# asp.net asp.net-mvc

我使用asp.net会员提供程序来管理用户。我要求在5次尝试失败后锁定用户帐户30分钟。我应该如何在服务器端使用asp.net成员资格提供程序呢?

此外,我希望“密码应在3个月后过期”,“最后10个使用的密码应该被记住”。有没有办法解决这些要求。

5 个答案:

答案 0 :(得分:1)

对于第一个要求,成员资格提供程序提供MaxInvalidPasswordAttempts属性,您可以将其与PasswordAttemptWindow属性结合使用。

据我所知,第二项要求需要您自定义会员提供商。根据我的知识,基本成员资格提供程序不会保留先前的密码或重置强制密码。但是,如果您自己创建自定义提供程序,则可以执行此操作。

Starter material for creating a custom membership provider

答案 1 :(得分:0)

ASp.Net会员提供商不为您的要求提供任何内置支持,您仍然可以通过做一些自定义工作来实现它们.i-e

  1. 您可以安排一个每30分钟解锁所有锁定用户帐户的作业。
  2. 在您的应用程序中,您可以检查后续用户登录是否相隔3个月,应该将用户重定向到changepassword页面。
  3. 用户的最后10个密码可以保存在另一个表中,您需要为更改密码功能编写一些代码。

答案 2 :(得分:0)

如果您使用的是SqlMembershipProvider,请使用

尝试

maxInvalidPasswordAttempts

passwordAttemptWindow用于锁定指定期间

没有密码过期或密码历史记录的选项

但如果您使用的是ActiveDirectoryMembershipProvider,请使用

尝试

maxInvalidPasswordAttempts

passwordAnswerAttemptLockoutDuration用于锁定指定期间

并调整域策略以获取密码过期或密码历史记录

完整信息

http://msdn.microsoft.com/en-us/library/ff648345.aspx#paght000022_usingthesqlmembershipprovider

答案 3 :(得分:0)

您可以通过在数据库中创建适当的表来完成上述所有功能。 即,

  1. 创建一个表来存储错误尝试次数,当基于主键(即用户名)发生错误尝试时增加计数,如果他成功登录则尝试5次,然后尝试将该计数设为空

  2. 在5次尝试失败后锁定用户存储时间并编写一个脚本以连续检查该时间,当它遇到30分钟时调用解锁方法

  3. 对于密码也需要计算日期,即每次用户在检查用户有效性检查密码日计数后登录,如果它跨越3天提示他们更改

  4. 如果您将用户名作为主键,请再创建一个表以存储每个用户的最多10个密码,同时在此表中插入密码(当用户更改其密码时),检查表中的数字行该用户如果是10,那么根据最后较小的日期,您可以删除该行并插入新密码,您也可以在插入时将新密码与旧密码进行比较

答案 4 :(得分:0)

创建自定义成员资格提供程序在那里您可以实现所有需要的功能,请参阅示例:http://msdn.microsoft.com/en-us/library/44w5aswa.aspx