登录模块

登录接口

从redis中根据手机号获得缓存的验证码
短信验证码校验
图片验证码校验验证码
通过后 删除缓存中的获取的验证码
进行密码的校验

密码校验的过程

通过手机号查找到SQL中存的密码
通过参数 进行RSA解密,得到参数密码
如果以上两密码相同

进入第一次登录逻辑,首次登录 获取用户基本信息Userlog

用户信息转换成map
根据id生成一个字符串token,
Map中添加键值对 键是“userToken”值是刚刚生成的字符串
在redis中添加 键id和 值token 设置15分钟
在redis中添加 键token和 值map(map中是用户信息和userToken) 设置15分钟

userlog中设置登录时间,登录ip
写入数据库
响应体设置头 (权限,token)
返回 map

如果不相等 将数据库得到的密码进行盐哈希解密,与参数对比
一致则获取用户的上次登录信息,非第一次登录

进入第二次登录逻辑

获取用户上次登录的id,时间 ip等
转换成map
根据id生成一个字符串token,
Map中添加键值对 键是“userToken”值是刚刚生成的字符串
在redis中添加 键id和 值token 设置15分钟
在redis中添加 键token和 值map(map中是用户上次信息和userToken) 设置15分钟

userlog中设置登录时间,登录ip
写入数据库
响应体设置头 (权限,token)
返回 map

校验成功 登录成功

密码修改接口

首先检查新密码格式是否正确,具体实现方式为调用格式检查接口
String pattern = “(?=.*[a-z])(?=.*\d)(?=.*[#?!@$%^&*-\.\[\]\*])[A-Za-z\d`#?!@$%&-\.\[\]\]{8,20}”;
Pattern r = Pattern.compile(pattern);
将给定的正则表达式 编译并赋予给Pattern类。然后使用macher方法返回一个Matcher类
Matcher m = r.matcher(newPassword);
return m.matches();//返回一个布尔值
然后检查手机号或者旧密码输入是否为空
//获取DB中密码
String passworFromDb = loginMapper.findUserByPhone(phone);
String oldPassword = “”;
String hashNewPws = HmacSha256Util.hmacSHA256(HmacSha256Util.getAppSecret(), newPassword);
//根据账号状态进行修改密码
String token = request.getHeader(“Authorization”);
Integer status = (Integer) redisUtil.hGet(token, “userStatus”);
if (status == 0) {//未改过密码
if(!password.equals(passworFromDb))
throw new BusinessException(“旧密码不对”);
loginMapper.passwordChange(hashNewPws, phone);
loginMapper.updateStatus(phone);
redisUtil.hPut(token, “userStatus”, 1);
}
第一次修改 不需要验证过去五次是否一样,但是要修改账号密码状态
else{//改过密码
oldPassword = HmacSha256Util.hmacSHA256(HmacSha256Util.getAppSecret(), password);
if (!oldPassword.equals(passworFromDb))
throw new BusinessException(“旧密码不对”);
//通过验证,开始修改操作 取最近5次
List list = loginMapper.checkPassword(phone);
System.out.println(list);
for (String pasw : list) {
if (hashNewPws.equals(pasw))
throw new BusinessException(“密码与近五次密码有重复”, new Error());
}
loginMapper.passwordChange(hashNewPws, phone);
}
return Result.success();

过滤器

网关上设置全局过滤器
设置登录,发送验证码等接口为白名单,不需要经过过滤器
其余接口被调用前必须经过验证
验证方式为 从header 获取到token,与redis中的token(通过useid获得)进行对比
相同之后 进行ip等相关条件的比对(前端发来的header)

粉丝管理模块

加入分组功能
//将规则及粉丝数量计入分组
fansQueryMapper.tagBindingRule(fansQueryDto);
// 加入任务列表
String uuid = “tagTask” + UUID.randomUUID().toString().substring(0, 8);
String token = request.getHeader(“Authorization”);
String createdBy = redisUtil.hGet(token, “userName”).toString();
taskMapper.addTagTask(uuid, createdBy, fansQueryDto.getTagId());
//统计结果
String status = “已完成”;
String result = “全部成功”;
taskMapper.updateTaskStatus(uuid,status, result);

分组管理模块

累加所有分组得到总分组数

先进行分页逻辑
参数是 每页显示数量 和显示第几页
根据以上两个参数和总数 可以算出 当前查的第一个元素位置
然后进行查询

    // 取总记录数,自定义记录数,规则记录数Page<FansGroup> page = subGroupMapper.queryGroupFromDB();// 取总页码Integer totalPage = page.getPageTotal() / pageSize;if (page.getPageTotal() % pageSize > 0) {totalPage += 1;}// 设置总页数,清空多余数据page.setTotalPage(totalPage);page.setPageTotal(null);//设置显示数量pageSize = Math.min(pageSize, 10);// 设置当前页码,求当前页数据的开始索引int begin = (pageNo - 1) * pageSize;// 设置当前页数据List<FansGroup> items = subGroupMapper.queryForPageItems(begin, pageSize);// 设置当前页数据page.setTagList(items);String jsonString = JSON.toJSONString(page);Map map = JSON.parseObject(jsonString, Map.class);return map;

微信后台订阅管理系统总结相关推荐

  1. vue小米商城源代码_微信商城信息管理系统(java后台+小程序)

    前一段时间在公众号中发布了一套微信商城信息管理系统(java后台+小程序),也许大家可能都还记得.今天再给大家重复呈现一遍.重新梳理下,方便大家理解这是做什么用的,以便日后使用.开始正题 01 编写目 ...

  2. 微信读书登陆界面java_(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好...

    转载地址:(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 一.环境搭建 相关环境软件:JDK1 ...

  3. 微信小程序教学管理系统+后台管理系统

    <微信小程序教学管理系统+后台管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的教学管理系统前台和Java做的后台管理系统: 微信小 ...

  4. (微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好

    转载地址:(微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 作者:Happy王子乐 个人网站(整理 ...

  5. 分享一套微信门户应用管理系统源码 微信公众号平台开发框架源码

    微信门户开发框架源码 微信公众号平台开发框架源码 源码分享,需要源码学习可私信我获取. 微信门户应用管理系统,采用基于 MVC + Bootstrap + Ajax + Enterprise Libr ...

  6. php写网页6,基于ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,ThinkPHP6开发的后台权限管理系统...

    源码介绍 基于最新ThinkPHP6+AdminLTE框架开发的响应式企业网站CMS系统PHP源码,基于最新版本的ThinkPHP 6.0.0RC3框架,后台前端框架采用AdminLTE.系统的核心理 ...

  7. 分享一套开源微信后台开发源码,简单配置就能使用(附源码)!

    项目源码 推荐 7 个牛哄哄 Spring Cloud 实战项目 推荐一个非常火爆的电商开源项目! 推荐两个项目! 重磅推荐:一套开源的网校系统,无论是自建网校还是接副业都很方便 推荐几个支付项目! ...

  8. 10年前腾讯微信后台第一天提交的代码曝光!

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招! 个人原创100W+访问量博客:点击前往,查看更多 编辑:卫 ...

  9. c++ 后台 sendstring_苹果狂杀微信后台,微信官方出必杀技!

    微信最近太不让用户省心了: 前段时间被谷歌钉在了 90Hz 的耻辱柱上. 中间又搞出来个微信支付崩溃的幺蛾子. 现在苹果用户升级到 iOS 13.2 又发现,iPhone 狂杀微信后台. 最近麦子也饱 ...

最新文章

  1. python字典导入mongodb_Python中的有序字典:添加到MongoDB
  2. JAVA设计模式初探之——装饰者模式
  3. 计算机基本组成: 触发器
  4. 第八周实践项目3 顺序串一些算法操作
  5. el table 固定表头和首行_el-table表头根据内容自适应,解决表头错位和固定列错位(完美解决)...
  6. 搞懂 SynchronizationContext
  7. 二维码的生成(可设置大小)以及插件下载地址
  8. 面试官、女朋友都满意系列 - 决策树
  9. maya崩溃自动保存路径_xgen 分享在maya里制作头发失败经验
  10. 将指定路径下的所有SVG文件导出成PNG等格式的图片(缩略图或原图大小)
  11. oracle逗号分隔函数
  12. 李洪强iOS经典面试题156 - Runtime详解(面试必备)
  13. python绘制风向玫瑰图和污染物玫瑰图
  14. sas导出数据串行解决方案
  15. MacOS Ventura 13.0 Beta3 (22A5295i) 带 OC 0.8.2 三分区原版黑苹果镜像
  16. pdf图片怎么转换成word文档?
  17. 更新git 分支代码到最新
  18. 625线,525线什么意思?
  19. 技术报告 | 华为云中国信通院:云原生2.0 白皮书.pdf(附下载链接)
  20. SimpleDateFormat大写Y和小写y的区别

热门文章

  1. 辗转相除法-欧几里得算法
  2. kali渗透80端口的php,一次对内网服务器的KALI渗透测试
  3. 360WIFI2无线网卡移植 -MT7601U移植
  4. .mypage打破传统html文档结构
  5. [乐意黎转载]计算机英语词汇
  6. A * 算法(机器人路径避障规划)
  7. C语言用矩形法求定积分的通用函数,分别求 sinx, cosx,e^x
  8. Unity 模拟鼠标点击操作
  9. Fast Normalized Cross-Correlation
  10. 2022最新Java高级程序员架构师面试题及答案