我使用asp.net会员提供程序来管理用户。我要求在5次尝试失败后锁定用户帐户30分钟。我应该如何在服务器端使用asp.net成员资格提供程序呢?
此外,我希望“密码应在3个月后过期”,“最后10个使用的密码应该被记住”。有没有办法解决这些要求。
答案 0 :(得分:1)
对于第一个要求,成员资格提供程序提供MaxInvalidPasswordAttempts属性,您可以将其与PasswordAttemptWindow属性结合使用。
据我所知,第二项要求需要您自定义会员提供商。根据我的知识,基本成员资格提供程序不会保留先前的密码或重置强制密码。但是,如果您自己创建自定义提供程序,则可以执行此操作。
答案 1 :(得分:0)
ASp.Net会员提供商不为您的要求提供任何内置支持,您仍然可以通过做一些自定义工作来实现它们.i-e
答案 2 :(得分:0)
如果您使用的是SqlMembershipProvider
,请使用
maxInvalidPasswordAttempts
passwordAttemptWindow
用于锁定指定期间
没有密码过期或密码历史记录的选项
但如果您使用的是ActiveDirectoryMembershipProvider
,请使用
maxInvalidPasswordAttempts
passwordAnswerAttemptLockoutDuration
用于锁定指定期间
并调整域策略以获取密码过期或密码历史记录
完整信息
http://msdn.microsoft.com/en-us/library/ff648345.aspx#paght000022_usingthesqlmembershipprovider
答案 3 :(得分:0)
您可以通过在数据库中创建适当的表来完成上述所有功能。 即,
创建一个表来存储错误尝试次数,当基于主键(即用户名)发生错误尝试时增加计数,如果他成功登录则尝试5次,然后尝试将该计数设为空
在5次尝试失败后锁定用户存储时间并编写一个脚本以连续检查该时间,当它遇到30分钟时调用解锁方法
对于密码也需要计算日期,即每次用户在检查用户有效性检查密码日计数后登录,如果它跨越3天提示他们更改
如果您将用户名作为主键,请再创建一个表以存储每个用户的最多10个密码,同时在此表中插入密码(当用户更改其密码时),检查表中的数字行该用户如果是10,那么根据最后较小的日期,您可以删除该行并插入新密码,您也可以在插入时将新密码与旧密码进行比较
答案 4 :(得分:0)
创建自定义成员资格提供程序在那里您可以实现所有需要的功能,请参阅示例:http://msdn.microsoft.com/en-us/library/44w5aswa.aspx