84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
基于Django框架下的用户登录页面,如果想实现非法登录次数限制的功能(比如说,用户在5分钟内连续输错10次密码,则该用户在24小时内无法登录),有哪些思路?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
提供一些思路供参考:
用户登录失败,将登录失败次数记录到cache中:比如redis
在5分钟内连续登录失败3次,为了防止暴力破解用户密码行为,此时可在登录页面提供验证码输入框
验证码输入失败,不需要验证账号密码是否正确
如果验证码正确,但是5分钟内已经输错了10此账号密码,则可以冻结该用户,设置该用户的is_active属性为False;冻结24小时,可在cache中写一个TTL为24小时的Flag,比如以username为key
用户登录时,首先检查是否存在key未username的Flag,如果有表明该用户在冻结状态中,因为设置了is_active为False,登录自然会失败
如果flag不存在于cache中,在检查该密码是否正确,如果正确可设置is_active为True,以恢复期冻结状态
提供一些思路供参考:
用户登录失败,将登录失败次数记录到cache中:比如redis
在5分钟内连续登录失败3次,为了防止暴力破解用户密码行为,此时可在登录页面提供验证码输入框
验证码输入失败,不需要验证账号密码是否正确
如果验证码正确,但是5分钟内已经输错了10此账号密码,则可以冻结该用户,设置该用户的is_active属性为False;冻结24小时,可在cache中写一个TTL为24小时的Flag,比如以username为key
用户登录时,首先检查是否存在key未username的Flag,如果有表明该用户在冻结状态中,因为设置了is_active为False,登录自然会失败
如果flag不存在于cache中,在检查该密码是否正确,如果正确可设置is_active为True,以恢复期冻结状态