文章目录

  • 一、手机号+验证码
  • 二、前端
    • 2.1. 点击登陆流程
    • 2.2. 点击登录源码
  • 三、后端登录
    • 3.1. 登录流程图
    • 3.2. 流程简述
    • 3.3. 手机号验证码登录流程
一、手机号+验证码

二、前端
2.1. 点击登陆流程
  • 1.先校验手机号是否合法?不合法,则提示“请输入正确的手机号”
  • 2.再校验是否勾选隐私协议,未勾选,则提示“请先同意《隐私及服务协议》”
  • 3.校验通过后,根据选择的登录类型进行判断,最后,则调用后端手机号验证码登录接口
  • 4.后端返回结果
    • 4.1.成功,则保存用户信息+token信息
    • 4.2.失败:则提示后端返回的提示语
2.2. 点击登录源码
         loginOrRegist() {var me = this;var mobile = me.mobile;// 提交前,手机号校验var reg = /^1[0-9]{10,10}$/;if (!mobile || !reg.test(mobile)) {uni.showToast({title: '请输入正确的手机号',icon: 'none'})return}if (!this.agree) {uni.showToast({title: '请先同意《隐私及服务协议》',icon: 'none'});return;}var serverUrl = app.globalData.serverUrl;// 手机号密码~登录/注册if (!this.logintype) {var password = me.password;if (app.isStrEmpty(password)) {uni.showToast({title: "密码不能为空",icon: "none"});return;}// uni.showLoading()// 调用后端登录注册uni.request({method: "POST",url: serverUrl + "/user/mobileAndPasswordRegistLogin",data: {"mobile": mobile,"password": password},success(result) {var status = result.data.status;// uni.hideLoading();if (status == 200) {var userInfo = result.data.data;console.log("密码->userInfo", userInfo)app.setUserInfoSession(userInfo);app.setUserSessionToken(userInfo.userToken);// 登录成功,关闭当前页// me.close();uni.reLaunch({url: "../me/me"})} else if (status != 200) {uni.showToast({title: result.data.msg,icon: "none",duration: 3000});}}});}// 手机号验证码~登录/注册if (this.logintype) {var verifyCode = me.verifyCode;console.log("verifyCode", verifyCode)if (app.isStrEmpty(verifyCode)) {uni.showToast({title: "请填写验证码",icon: "none"});return;}// 调用后端登录注册uni.request({method: "POST",url: serverUrl + "/user/login",data: {"mobile": mobile,"smsCode": verifyCode},success(result) {var status = result.data.status;// uni.hideLoading();if (status == 200) {var userInfo = result.data.data;console.log("验证码->userInfo", userInfo)app.setUserInfoSession(userInfo);app.setUserSessionToken(userInfo.userToken);// 登录成功,关闭当前页// me.close();uni.reLaunch({url: "../me/me"})} else if (status != 200) {uni.showToast({title: result.data.msg,icon: "none",duration: 3000});}}});}}
三、后端登录
3.1. 登录流程图

会话拦截限制一台手机登录(流程图)

3.2. 流程简述
  • 1.前端传递userId和token
  • 2.后端接收userId和token
  • 3.校验userId和token是否为空
  • 4.校验任一为空,则提示“请登录后再继续操作!”
  • 5.不为空,通过UserId从redis中获取token
  • 6.redis中的token与传参token校验是否一致
  • 7.不一致,第一台登录的会“会话失效,请重新登录!”
  • 8.一致继续操作

备注:由于登录不拦截,因此当第二台手机登录时,token会将第一台手机的登录token进行覆盖


3.3. 手机号验证码登录流程
  • 1.从redis中获得验证码进行校验是否匹配
  • 2.查询数据库,判断用户是否存在
    • 2.1 如果用户为空,表示没有注册过,则为null,需要注册信息入库
    • 2.2 如果用户不为空,表示已经注册过,继续
  • 3.如果不为空,可以继续下方业务,可以保存用户会话信息
  • 4.用户登录注册成功以后,删除redis中的短信验证码
  • 5.返回用户信息,包含token令牌
    @PostMapping("login")public GraceJSONResult login(@Valid @RequestBody RegistLoginBO registLoginBO,HttpServletRequest request) throws Exception {String mobile = registLoginBO.getMobile();String code = registLoginBO.getSmsCode();// 1. 从redis中获得验证码进行校验是否匹配String redisCode = redis.get(MOBILE_SMSCODE + ":" + mobile);if (StringUtils.isBlank(redisCode) || !redisCode.equalsIgnoreCase(code)) {return GraceJSONResult.errorCustom(ResponseStatusEnum.SMS_CODE_ERROR);}// 2. 查询数据库,判断用户是否存在Users user = userService.queryMobileIsExist(mobile);if (user == null) {// 2.1 如果用户为空,表示没有注册过,则为null,需要注册信息入库user = userService.createUser(mobile);}// 3. 如果不为空,可以继续下方业务,可以保存用户会话信息String uToken = UUID.randomUUID().toString();redis.set(REDIS_USER_TOKEN + ":" + user.getId(), uToken);// 4. 用户登录注册成功以后,删除redis中的短信验证码redis.del(MOBILE_SMSCODE + ":" + mobile);// 5. 返回用户信息,包含token令牌UsersVO usersVO = new UsersVO();BeanUtils.copyProperties(user, usersVO);usersVO.setUserToken(uToken);return GraceJSONResult.ok(usersVO);}

抖音实战~手机号验证码一键注册登录流程(限制手机终端登录)相关推荐

  1. 抖音实战~手机号密码一键注册登录流程(限制手机终端登录)

    文章目录 一.手机号+密码 二.前端 2.1. 点击登陆流程 2.2. 点击登录源码 三.后端登录 3.1. 登录流程图 3.2. 流程简述 3.3. 手机号验证码登录流程 一.手机号+密码 二.前端 ...

  2. php开发如何一键群发几十个群,快手、头条、抖音群发软件,一键操控几十个账号的工具...

    原标题:快手.头条.抖音群发软件,一键操控几十个账号的工具 随着时代的进步,2015年到现在,新媒体产业真的有热度,其与粉丝的距离瞬间缩小.流量优势无可比拟.出色的转化比率等等优越性,慢慢引来无数的个 ...

  3. 辽宁丰睿佳业科技有限公司:抖音小店精选联盟免费入驻流程?

    现在的电商成为很多人关注的,想要更好的创业,那么抖音小店精选联盟免费入驻流程?就是很多新手想要知道的,下面就和辽宁丰睿佳业科技有限公司一起来看看吧,希望能帮到大家! 抖音小店商家入驻精选联盟需要满足两 ...

  4. 抖音中误删视频的详细解决流程

    有时候一不小心就将抖音中的视频误删了,你们了解怎么处理吗?下文就为你们带来了抖音中误删视频的详细解决流程. 抖音中误删视频的详细解决流程 如果你抖音中的视频误删了,先确认自己的手机有没有开启照片的云备 ...

  5. 快手今日头条火山秒拍陌陌美拍抖音小咖秀视频下载软件神器或手机 视频去重消重伪原创 批量处...

    今日头条趣东方头条凤凰新浪看点网易企鹅UC大鱼一点资讯自媒体快传视频处理软件 今日头条推广视频教程自媒体推广短视频教程今日头条引流小白入门 视频解析下载支持今日头条快手抖音火山映客陌陌西瓜美拍微博等 ...

  6. 手机短信验证码一键注册登录功能开发 2

    1. 上一篇我们开发好了 短信验证码的发送功能, 接下来开发 我们的 一键登录注册功能 2. 有前端的视图我们可以看到, 传入的参数为手机号和验证码,我们用BO对其进行统一的封装,同时使用valid ...

  7. 视频一键去水印,抖音快手短视频去水印软件,安卓软件,免登录,支持全平台!

    ![](https://img-blog.csdnimg.cn/img_convert/1861f70aa325cd8c966ec24951e58fb1.png Hi,大家好,我是小白 White.~ ...

  8. 抖音微商引流之抖音实战引流技巧,,抖音/快手/火山热门技术---

    [使用说明] [目前引流效果最好脚本之一] 小米4 手机 模拟器 容易符合 市场上都是模拟器 封号很严重 分辨率:540x960 DPI 240 安装脚本跟APP 登录抖音/设置评论话术/启动脚本 功 ...

  9. 抖音用户手机号API说明-------抖音开放平台

    在抖音开放平台里有这么一个接口是获取抖音用户的手机号的,在用户授权之后会得到一个由base64的加密的字符串,我们要想知道这个字符串代表的手机号是多少,就必须要进行解密. 一下是抖音开放平台给出的示例 ...

最新文章

  1. 纯干货|目前看到的BERT比较透彻的文章,强烈推荐
  2. soapui工具_基于开源的API测试工具!不再为web服务负载测试而发愁
  3. (Incomplete) UVa 719 Glass Beads
  4. 如何查看电脑显卡能使用的对应的cuda版本?
  5. Linux——进程间关系和守护进程(总结)
  6. QlikSense移动端使用攻略
  7. 20200222:串联所有单词的子串(leetcode30)
  8. 镭神激光雷达对于Autoware的适配
  9. 天语手机android 4.4.4,天语 touch 2 4.4.4 ROM刷机包 FIUI
  10. 合并两个有序数组 Go语言
  11. python迭代法求极值_4计算函数零点和极值点的迭代法
  12. adxl345取出值怎么算角度_ADXL345测量倾斜角度数据跳动
  13. 网站pv和uv比例多少合适
  14. DHTML动态样式的作用
  15. 僵尸进程和孤儿进程-(转自Anker's Blog)
  16. excel怎么把竖排变成横排_PS虚线字怎么制作-PS虚线字绘制教程详解
  17. 电脑录像软件推荐?分享3款,简单好用且方便
  18. 如何快速设置CorelDRAW中网格
  19. 10分钟让你学会百度指数跑分图
  20. 计算机发展历史介绍英文版,计算机发展历史英文PPT The history of computer

热门文章

  1. python遍历数组同时去掉括号_python去除括号
  2. ESP8266 12F 点灯科技APP 控制两个舵机
  3. HDU-5965 扫雷(dp / 递推)
  4. 详解麦克风阵列的原理、分类及作用
  5. MySql基础语法-java学习
  6. 怎么设置虚拟拨号服务器,如何设置PPPoE上网(ADSL虚拟拨号)
  7. 6亿视频号的8种变现模式
  8. visibility
  9. 【面试】815- 面试官常问的 webpack 插件
  10. 加勒比海盗船(最优装载问题)