sessionId在小程序中的妙用
2024-09-05 05:55:47
前言:小程序发送短信验证码需要在后台储存生成的code,一次会话应放入session中,请求头部发送sessionId验证为同一session
1.页面一加载就从后台获取sessionId,储存在本地缓存中
后台:
/**
* 获得sessionId
*/
@RequestMapping("/getSessionId")
@ResponseBody
public Object getSessionId(HttpServletRequest request) {
try {
HttpSession session = request.getSession();
return session.getId();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
2.发送验证码时在头部携带 "Cookie": sessionId,然后将电话号码传给后台
/**
* 发送短信验证码
* @param phoneNum 接收手机号码
*/
@RequestMapping(value = "/sendMsg",method = RequestMethod.POST)
public Object sendSms(HttpServletRequest request, String phoneNum) {
try {
JSONObject json = null;
//生成6位验证码
String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);
AliyunMessage.sendMessage(phoneNum,verifyCode);
//将验证码存到session中,同时存入创建时间
//以json存放,这里使用的是阿里的fastjson
HttpSession session = request.getSession();
json = new JSONObject();
json.put("verifyCode", verifyCode);
json.put("createTime", System.currentTimeMillis());
// 将认证码存入SESSION
request.getSession().setAttribute("verifyCode", json);
return "success";
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
3.验证验证码
前台发送请求验证时同样需要携带sessionId的头部
/**
* 验证
*/
@RequestMapping(value = "/verification",method = RequestMethod.POST)
@ResponseBody
public Object addinfo(
HttpServletRequest request,
String phoneNum,
String code) {
JSONObject json = (JSONObject)request.getSession().getAttribute("verifyCode");
if(!json.getString("verifyCode").equals(code)){
return "验证码错误";
}
if((System.currentTimeMillis() - json.getLong("createTime")) > 1000 * 60 * 5){
return "验证码过期";
}
return "success";
}
从session中获取code,然后与传过来的code相比较
这里设置的失效时间为5分钟
最新文章
- UrlEncode编码/UrlDecode解码 - 站长工具
- [sicp]huffman编码的实现 @ Scheme
- (转载)Java基础知识总结
- CentOS 7.0启用iptables防火墙
- CSS3最简洁的轮播图
- bzoj1306
- JavaScript 实现数组的foreach
- Linux动态频率调节系统CPUFreq之三:governor
- 【C++】C++中的分离式编译
- Chapter 5 数组:为什么很多编程语言种数组都是从0开始编号?
- Python学习笔记 -- 第一章
- iOS开发-- TFHpple抓取GB-2312编码的html页面,页面返回编码错误
- js 正则函数初级
- 编译https://github.com/CIR-KIT/steer_drive_ros时出现的问题
- 泡泡机器人SLAM 2019
- 企业案例(一):由于mysql sleep线程过多小故障
- MQTT介绍(3)java模拟MQTT的发布,订阅
- Springmvc和Mybatis中常用的注解
- Spring框架第五篇之Spring与AOP
- AspectJ语法