微网站 下载,在线ftp传网站文件,个人能做网站吗,wordpress 仪表盘美化文章目录一、手机号验证码二、前端2.1. 点击登陆流程2.2. 点击登录源码三、后端登录3.1. 登录流程图3.2. 流程简述3.3. 手机号验证码登录流程一、手机号验证码 二、前端
2.1. 点击登陆流程
1.先校验手机号是否合法#xff1f;不合法#xff0c;则提示“请输入正确的手机号”… 文章目录一、手机号验证码二、前端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和token2.后端接收userId和token3.校验userId和token是否为空4.校验任一为空则提示“请登录后再继续操作”5.不为空通过UserId从redis中获取token6.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);}