【探花交友】用户登录总结
1.发送验证码
1.发送post请求 数据封装在map 获取map的手机号码
2.调用service层将手机号码 传入过去
3.正常返回状态码200
@RestController
@RequestMapping("/user")
public class LoginController {@Autowiredprivate UserService userService;/*** 获取登录验证码* 请求参数:phone (Map)* 响应:void*/@PostMapping("/login")public ResponseEntity login(@RequestBody Map map){String phone =(String) map.get("phone");userService.sendMsg(phone);return ResponseEntity.ok(null); //正常返回状态码200}
}
1.随机生成6位数字验证码
2.将验证码存入reids 使用固定前缀+手机号码 过期时间5分钟
@Service
public class UserService {@Autowiredprivate SmsTemplate template;@Autowiredprivate RedisTemplate<String,String> redisTemplate;/*** 发送短信验证码* @param phone*/public void sendMsg(String phone) {//1、随机生成6位数字//String code = RandomStringUtils.randomNumeric(6);String code = "123456";//2、调用template对象,发送手机短信//template.sendSms(phone,code);//3、将验证码存入到redisredisTemplate.opsForValue().set("CHECK_CODE_"+phone,code, Duration.ofMinutes(5));}}
2.用户登录
1.从map中获得手机号码 和 验证码
2.调用service层 传入手机号码 和验证码
3.返回map map里必须要有token信息 和 isNew 是否新用户
/*** 检验登录*/@PostMapping("/loginVerification")public ResponseEntity loginVerification(@RequestBody Map map) {//1、调用map集合获取请求参数String phone = (String) map.get("phone");String code = (String) map.get("verificationCode");//2、调用userService完成用户登录Map retMap = userService.loginVerification(phone,code);//3、构造返回return ResponseEntity.ok(retMap);}
4.从redis获取验证码
5.对redis验证码进行一个非空判断(防止已经删除了) 与 对传入来的验证码进行一个校验 如果
redis验证码非空 或 验证码错误 则抛出异常
6.删除redis存的验证码(防止重复使用)
7.创建一个boolean值 isNew 默认是false(不是新用户)
8.调用api传入手机号 查找用户
9.判断用户是否存在
8.如果不存在就是新用户 重新new一个(因为没查找出来是null 必须在new一个) 设置他的手机
号码 以及密码(密码默认123456 md5加密) 然后保存 返回它的用户id(这里我有点不懂 insert 之后
为什么user 就有id)
9.将id设置给user isNew=true 表示是个新用户
10.创建map 存入id和手机号码 使用jwt加密成token
11.创建map保存数据 将生成的token存入进去 和 isNew 返回给controller层
/*** 验证登录* @param phone* @param code*/public Map loginVerification(String phone, String code) {//1、从redis中获取下发的验证码String redisCode = redisTemplate.opsForValue().get("CHECK_CODE_" + phone);//2、对验证码进行校验(验证码是否存在,是否和输入的验证码一致)if(StringUtils.isEmpty(redisCode) || !redisCode.equals(code)) {//验证码无效throw new RuntimeException();}//3、删除redis中的验证码redisTemplate.delete("CHECK_CODE_" + phone);//4、通过手机号码查询用户User user = userApi.findByMobile(phone);boolean isNew = false;//5、如果用户不存在,创建用户保存到数据库中if(user == null) {user = new User();user.setMobile(phone);user.setPassword(DigestUtils.md5Hex("123456"));Long userId = userApi.save(user);user.setId(userId);isNew = true;}//6、通过JWT生成token(存入id和手机号码)Map tokenMap = new HashMap();tokenMap.put("id",user.getId());tokenMap.put("mobile",phone);String token = JwtUtils.getToken(tokenMap);//7、构造返回值Map retMap = new HashMap();retMap.put("token",token);retMap.put("isNew",isNew);return retMap;}
【探花交友】用户登录总结相关推荐
- 【探花交友DAY 02】项目搭建和用户登录功能的实现
1. 项目介绍 探花交友是一个陌生人的在线交友平台,在该平台中可以搜索附近的人,查看好友动态,平台还会通过大数据计算进行智能推荐,通过智能推荐可以找到更加匹配的好友,这样才能增进用户对产品的喜爱度.探 ...
- #博学谷it学习技术支持#探花交友项目:用户登录
#博学谷it学习技术支持#探花交友项目:用户登录 目录: 一.基本执行流程 二.Service模块内容的编写: 三.Dabbo模块下: 四.model(实体类)模块下: 五.思维导图 正文: 用户登录 ...
- 探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍
探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍 文章目录 探花交友_第1章_项目介绍以及实现登录功能_第2节_项目介绍 2.项目介绍 2.1.项目背景 2.2.市场分析 2.3.目标用户 ...
- 探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍
探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍 文章目录 探花交友_第1章_项目介绍以及实现登录功能_第1节_功能介绍 1.功能介绍 1.1.功能列表 1.2.注册登录 1.3.交友 1 ...
- 黑马探花交友----1.项目搭建-注册登录-完善个人信息
学习目标: 项目的功能介绍 工程搭建 短信验证码 阿里云OSS服务应用 人脸识别 完善个人信息 1.社交介绍 1.1.项目背景 在线社交是互联网时代的产物,已成为互联网用户的基础需求之一.移动互联网自 ...
- 探花交友10-数据统计与内容审核
1.用户冻结解冻 用户冻结/解冻使用管理员在后台系统对用户的惩罚措施.对于发布不当言论或者违法违规内容的用户,可以暂时.永久禁止其登录,评论,发布动态. 后台中解冻/冻结,就是将用户状态写入数据库中 ...
- 【探花交友DAY 11】定时统计任务和自动内容审核
1. 用户的冻结与解冻 用户冻结/解冻使用管理员在后台系统对用户的惩罚措施.对于发布不当言论或者违法违规内容的用户,可以暂时.永久禁止其登录,评论,发布动态等行为. 管理员在管理系统中对某一个用户冻结 ...
- 探花交友_第2章-完善个人信息与MongoDB入门
探花交友_第2章-完善个人信息与MongoDB入门 文章目录 探花交友_第2章-完善个人信息与MongoDB入门 1.完善个人信息 1.1.图片上传 1.1.1.图片存储解决方案 1.1.2.阿里云O ...
- 【探花交友】day06—即时通信
目录 1.即时通信 1.1.什么是即时通信?编辑 1.2.功能说明 1.3.技术方案 2.环信 2.1.开发简介 2.2.环信Console 2.3.接口说明 3.抽取环信组件 3.1.编写Huan ...
最新文章
- 【位运算】解题报告:luoguP4310 绝世好题(位运算优化DP)
- php 随机调用文章,zblog PHP调用热门文章、随机文章和热评文章代码
- Chrome原生工具实现长截图
- WebService入门Demo
- ubuntu 16.4 安装postgreSQL,使C++链接到数据库
- c语言学习进阶-C语言程序实现矩阵乘法
- windows 2003 server无法远程桌面连接
- node中exports和module.exports的关系及使用
- 零基础怎么学计算机编程!看完的你,应该会恍然大悟!
- 最新北京市生活常用电话一览表
- 毕设全记录——探索 JavaBDD
- 抓取腾讯校园招聘的第一页
- 将二维数组中最大值的 		行和列的下标打印出来
- 计算机硬件组成框图,以及各部件的作用及计算机系统的主要技术指标概念理解
- 基于51单片机的LED彩灯控制器设计
- 读书笔记:少有人走的路
- 高德地图哪个语音包最好_高德地图VS百度地图,哪个更靠谱?
- STM32学习(一)
- java的八种基本数据类型
- c语言数据类型习题,C语言-数据类型习题及答案.doc