开发者

redis string实现共享会话和手机验证码应用场景

目录
  • 共享会话
    • 实现思路
  • 手机验证码
    • 实现思路
    • 伪代码实现
      • 生成验证码
      • 验证验证码

共享会话

实现思路

如果每个应用服务器,维护自己的会话数据,此时彼此之间胡共享,用户请求访问到不同的服务器上,就可能会出现一些不能正确处理的情况了

redis string实现共享会话和手机验证码应用场景

为了解决这个问题,可以使用 Redis 将用户的 Session 信息进行几种管理,在这种模式下,只要保证 Redis 是最高可用和可扩展性的,无论用户被均衡到哪台 Web 服务器上,都集中从 Redis 中查询、更新 Session 信息!

redis string实现共享会话和手机验证码应用场景

手机验证码

实现思路

  1. 生成验证码

    • 用户输入手机号
    • 点击获取验证码(限制:1min 之内,最多获取 5 次)
  2. 检查验证码

    • 把短信收到的验证码这一串数,提交到系统中,验证是否正确

伪代码实现

生成验证码

String 发送验证码(phoneNumber) {
	key = "shortMsg:limit:" + phoneNumber;
	// 设置过期时间为 1 min
	//使用 NX,只在不存在 key 时才能设置成功
	bool r = Redis 执行命令: set key 1 ex 60 nx
	if (r == androidfalse) {
		// 说明之前设置过该手机的验证码了
		long c = Redis 执行命令: incr key
		if (c > 5) {
			// 说明超过一分钟 5 次的限制了
			// 限制发送
			return null;
		}
	}
	
	// 说明编程客栈要么之前没有设置过手机验证码;要么次数没有超过 5 次
	String validationCode = 生成随机的 6 位数的验证码();
	
	validationKey = "validation:" + phoneNumber;
	// 验证码 5 分钟内有效
	Redis 执行命令: set validationKey validationCode ex 300;
	
	// 返回验证码
	return vaildation;
}


验证验证码

// 验证用户输入的验证码是否正确
bool 验证验证码(phoneNumber, vaildation) {
	vaildationKey = "vaildation:" + phoneNumber;
	
	String value = Redis 执行命令: get vaildationKey;
	if (value == null) {
		// 说明没有这个手机验证码记录,验证失败
		return false;
	}
	
	if (value == vaildationCode) {
		retrurn true;
	} else {
		return false;
	}
}

像发送短信这样的操作,都是有专门的 SDK 来实现的(第三方提供的短信平台服务)(充值)

到此这篇关于redis stri编程ng实现共享会话和手机验证码应用场景的文章就www.devze.com介绍到这了,更多相js关redis string共享会话和手机验证码内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新数据库

数据库排行榜