Redis的小应用:限制密码错误次数

本文介绍如何使用Redis的字符串类型实现登录错误次数限制及60秒冻结机制。通过简单的PHP示例代码演示了如何记录错误次数并在达到指定次数后暂时禁止登录。

利用redis最基本的类型string类型,对key值的自增实现功能。

需求:同一账号登陆,错误3次,不允许登陆,60秒后才能再次登陆(测试)

流程:登陆--查询是否超过错误次数|-->超过-->不允许登陆

                                                     |-->未超过|-->密码正确-->成功登陆

                                                                     |-->密码错误-->计数+1,设置账号解冻时间

<form action="login.php" method="post" >
名称<input type="text" name="name" id="">
密码<input type="password" name="pwd" id="">
<input type="submit" value="登陆">

</form>

<?php header("content-type:text/html;charset=utf-8");
//接收用户信息
$name = $_POST['name'];
$pwd = $_POST['pwd'];
$redis = new Redis();
$redis->connect('IP地址',6379);
$redis->auth('lnmp');//如果redis加密
$nums = $redis->get($name);
//查询错误次数
if($nums > 2){
//超过错误次数
echo '错误次数过多,请60秒后再试';
}else{
//没有超过错误次数
//验证密码
$truePwd = 123;//查询数据库
if($pwd == $truePwd){
echo '登陆成功';
}else{
$redis->incr($name);
echo '用户名或密码错误错误次数为'.$redis->get($name).'次';
//设置过期时间
$redis->setTimeout($name,60;
}
}







# 项目相关配置 ruoyi: # 名称 name: RuoYi # 版本 version: 3.8.7 # 版权年份 copyrightYear: 2023 # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: D:/ruoyi/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数字计算 char 字符验证 captchaType: math # 开发环境配置 server: # 服务器的HTTP端口,默认为8080 port: 8089 servlet: # 应用的访问路径 context-path: / tomcat: # tomcat的URI编码 uri-encoding: UTF-8 # 连接数满后的排队数,默认为100 accept-count: 1000 threads: # tomcat最大线程数,默认为200 max: 800 # Tomcat启动初始化的线程数,默认值10 min-spare: 100 # 日志配置 logging: level: com.ruoyi: debug org.springframework: warn # 禁止Actuator监控Redis连接 #management: # health: # redis: # enabled: false # 用户配置 user: password: # 密码最大错误次数 maxRetryCount: 5 # 密码锁定时间(默认10分钟) lockTime: 10 # 禁止Actuator监控Redis连接 management: health: redis: enabled: false # Spring配置 spring: # 资源信息 messages: # 国际化资源文件路径 basename: i18n/messages profiles: active: druid # 文件上传 servlet: multipart: # 单个文件大小 max-file-size: 10MB # 设置总上传的文件大小 max-request-size: 20MB # 禁止Actuator监控Redis连接 management: health: redis: enabled: false # 服务模块 devtools: restart: # 热部署开关 enabled: true # redis 配置 redis: # 地址 host: localhost # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码 password: # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms # token配置 token: # 令牌自定义标识 header: Authorization # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) expireTime: 30 # MyBatis配置 #mybatis: # # 搜索指定包别名 # typeAliasesPackage: com.ruoyi.**.domain # # 配置mapper的扫描,找到所有的mapper.xml映射文件 # mapperLocations: classpath*:mapper/**/*Mapper.xml 请根据该文
03-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值