登录:

登录方式 实现逻辑
手机动态密码登录
  • 调用服务层的loginBusiness的动态登录服务
  • 先检验是否超过限制的登录次数
  • 初始化登录事件loginevent
  • 检查用户是否被禁止登录
  • 调用接口给手机发送获取到的验证码
  • 以下是调用接口* 获取参数(origin,terminalsource,challenge,answer,userIP)
  • 如果不是app端登陆并且某业务线开启验证码登录功能或者answer不为空,调用安全的接口保证安全
  • 结果有错误,打日志
  • 校验登录验证码
  • 从request中获取参数(mobile,vcode,usersource,ip),并进行校验,将手机校验的信息记录到mobileAuthentic中
  • 根据手机号查询用户
  • 保存用户信息到eventUser
  • 添加登录key和登录渠道的记录
  • 检验用户是否被禁止(用户状态为2 禁止)
  • 如果用户为空且不是刚注册用户,报错,打日志,推送数据
  • 查询是否有该手机校验信息的验证码信息
  • 如果mobileAuthenticdb为空,报错(激活码失效)
  • 验证验证码是否超过时间限制
  • 校验vcode,删除mobileAuthentic(手机校验类)
  • 如果用户存在,验证用户状态,如果用户状态为刚注册,则设置用户状态为已验证
  • 如果用户为空,快速注册
  • 如果用户状态是刚注册的用户,设置用户信息,更新数据库中用户信息
  • 记录用户登录历史
  • 记录cookie 调用接口返回结果view * 生成session记录登录用户的信息(ip,logintime)
  • 简单密码动态码登录会生成一个sid
  • 更新用户绑定(根据用户的id或者用户名)
  • 服务层结束,返回loginsession
  • put cookie
  • 响应apiresponse,设置状态,消息和数据,登录成功
普通登录(邮箱登录/手机号登录/登录名登录)
  • 记录用户登录时信息(设备信息,用户ip,用户mac,服务器ip,用户来源,signal(usermac或者ip)等)
  • 记录用户信息userVo(username,password,mobile,email,nickname,loginname,signal),校验手机号(分为加密手机号和国籍手机号校验)
  • 设置机器设备的信息加密类型为false(就是用户登录net信息类型为false),将解密的email 和mobile加到userVo中
  • 根据登录用户来源确定用户登录信道(客户端端是app,wap,touch,pc,未登陆)
  • 登录接口参数格式校验(登录名是name,mobile,email,密码),参数长度校验(校验出错要打印日志,登录错误次数+1)
  • 根据登录类型做登录次数限制(校验出错要打印日志,登录错误次数+1)
  • 将userVo转化为LoginUser (将username和loginuser 转化为ASCCI码对应的)
  • 获取到验证码类型
  • 设置eventType为UC_login,如果验证类型是UC_TOUCH_LOGIN,则设置eventType为UC_TOUCH_LOGIN
  • 如果密码是加密的,将解密的密码加入到UserVo中 
    进行登录(通过用户名,手机号,邮箱)和密码登录
  • 验证登录类型是邮箱、手机号还是用户名
  • 将用户登录时信息放到eventUser中,
  • 根据用户输入得用户名查询用户(用户不存在推送数据到风控,监控,登录错误次数+1,打日志,)
  • 将查到的user加入到eventUser中,
  • 校验密码(密码为空,或加密后的密码和根据用户名查询出的密码不一致,推送数据到风控,监控,登录错误次数+1,打日志)
  • 检验用户状态是否是被禁用状态,用户是否能登录(验证通过或者刚注册的状态可登录),检验用户状态是否可信
  • 若检验出错,推送数据到风控,监控,登录错误次数+1,打日志
  • 保存密码强度分值(根据用户密码长度)以及登录ip,登录时间到userENcrypt中
  • 如果用户是快速注册,不需要激活(根据用户登录类型设置用户状态为验证通过)
  • update 加密用户信息
  • 记录用户登录历史,记录cookies(username,ip,用户来源,以及用户登录时信息)
  • 推送数据,监控,打日志,登录次数+1
  • 返回cookie,获取附加cookie,昵称,密码等级
  • 删除限制(登录错误限制,ip限制,登录验证码错误)
暗注册登录 
  • 验证登录类型是邮箱还是手机号或者是登录名登录* 根据登录类型查询user用户绑定信息,根据用户登录类型绑定用户信息
  • 检查用户状态看是否能正常使用,校验密码
  • 保存密码强度分值
  • 快速注册:如果登录过,则不需要对他的手机或者邮箱进行验证,如果没登录过,快速注册(直接验证手机号或者邮箱,不需要发验证码)
  • 调用本地登录接口登录
简单密码登录(动态码登录/简单登录) 
  • 获取手机号* 查询手机号是否有绑定的用户
  • 如果存在该用户,对密码进行处理
  • 首先验证简单密码是否正确
  • 生成随机数作为私钥
  • 得到加密后的密码(vcode+password)
  • 验证当前用户的session是否存在并且有效
  • 如果用户sessionid为空,根据手机号查询出用户
  • 如果需要vcode,从cache中查询出vcode
  • 如果从缓存中得到的不只是一个vcode
  • 查询当前用户(根据手机号或者sid)
  • 得到sessionid
  • 如果用户sessionID是不为空的,校验数据并且更新session,验证登录
  • 首先检查用户是否超过登录次数,是否能登录
  • 检验密码
  • 生成并保存session
  • 更新用户绑定(根据id 或者username)
  • 返回 loginsession到controller
  • 如果登录失败,记录用户登录的限制个数,检查他是超过登录次数限制,超过限制返回错误,否则重试
  • 如果登录成功,返回一个success的响应 |
快速注册用户通过链接登录
  • 从request中获取code(username,key(六位的url和一个8位的随机串)),singnal,source
  • 校验获取到的值
  • 通过url进行快速登录
  • 根据获取到的用户名查询用户
  • 初始化一个eventuser,用来保存用户信息(记录loginkey,loginsource)
  • 如果用户不存在,保存事件user信息,推送风险数据,记录用户状态是登录失败,打印日志,监听器将quicklogin的次数+1,返回错误
  • 如果用户存在,保存事件user信息,校验用户和key(给shorturl加密)url=shorturl+username ,,校验url参数顺序是否正确
  • 检验contact是否存在,不存在则返回错误,如果存在,激活或更新该用户状态
  • 记录登录历史和cookie,执行protectorEventTask,推送数据,执行eventbus 设置用户状态为登陆,打日志,监听器事件登陆次数+1,删除缓存(key+username),返回cookie。
 
通过第三方登录 
  • 获取userIP(如果IP为空,获取客户端的IP),获取用户来源(从哪条业务线来的订单)* 获取userID和域名,得到extUsername
  • 验证sign
  • 根据extUsername查询用户
  • 如果用户存在,查询用户是否绑定(根据extUserid)
  • 如果用户绑定,通过uid查用户的详细信息
  • 如果用户是sina微博特殊用户,直接登陆(记录登录历史,create cookie)
  • 如果用户是已经绑定且激活的正常用户,createOcookie
  • 如果不是特殊用户,定义一下登录resultmap
  • 如果user不存在,设置status为用户为绑定的状态吗
  • 否则设置status为用户已经绑定但未激活,设置qunarUsername为user的用户名,createOcookie
  • 将cookie的值放到登录的map中,响应登录成功。
app登录 
  • 获取loginway,得到登录方式对应的状态码
  • 设置终端信息属性
  • 在secteamService中调用app登录的接口
  • 返回登录信息
  • 根据登录方式选择login  action(普通登录,验证码登录,快速登录)
二维码登录  

应用:

1、线上用户登录qunar账号

2、admin用户中心后台登录

3、manager的订单中心管理系统登录

注册:

注册方式 实现逻辑
用户注册
  • 获取用户网络信息,
  • 获取request参数
  • 解密手机号和邮箱放到userVo中
  • 注册时用户信息校验
  • 检查密码强度
  • 判断昵称是否为空,是否含敏感字符,
  • 检查用户是否超过最大注册量限制
  • 记录注册来源
  • 将用户信息类userVo转化为registerUser
  • 设置用户状态为刚注册
  • 设置用户的登录名,注册时间,密码(加密的),mobileVertify 和emailVertify 状态
  • 将设置好的用户信息保存到userEncrypt中,
  • 用户的唯一性检验
  • 如果用户的手机号和邮箱都是空的,将userEncrypt插入到数据库中(新增用户),否则生成用户
  • 如果retURL为空,设置retURL;
  • 判断昵称是否为空
  • 新增一条用户详细资料
  • 生成激活码并发送(用户注册后必须激活才能使用)
  • 保存userInfo
  • 推送用户注册事件数据
  • 将用户加密过的信息保存到返回的结果中,返回结果。
  • 获取附加信息,loginkey,usertype,
  • 记录用户历史,cookie
  • 保存eventUser,如果用户附加信息不为空,将附信息保存到cookie中,返回cookie,记录日志 返回successedView
快速注册(联系方式/vcode/password)
SMS处理
  • 获取参数callbackurl、wireless_login_t,nickname,isactive,vid
  • 校验参数(解密联系方式,contact不能为空,如果usersource为空,或者callbackurl不为空并且校验返回的url是false,return 参数校验错,校验获取到的usersource是否为空,校验获取的短信模板是否为空,如果获取的短信模板是android或者iOS,,但是不是无线登陆端登陆,返回参数错误,校验contact是email还是mobile 还是wrong,记录contactway,校验activity type是否存在,返回结果)
  • 取出校验的结果和生成的数据
  • 如果usersource是ucenter 并且type是快速注册,增加一个第三方快速注册验证码限制
  • quickregister
  • 根据email和mobile分别查询是否存在user
  • 如果用户不存在,生成用户(随机产生的一个用户名,密码,根据输入得contactway来修改用户的状态为刚注册,并给用户加密,将加密的数据保存到userEncrypt类中
  • 将该条数据保存到数据库中,记录注册成功日志,
  • 如果callbackurl不为空,快速注册回调,返回用户名
  • 执行RegisterUserInfoTask判断是否该用户有昵称,如果没有,生成一个昵称
  • 执行QuickRegisterTask,给新用户的手机号或者邮箱发送注册信息
  • 执行ProtectorEventTask,推送数据* 设置新用户密码为空,返回一个新用户
app注册 获取信息,loginway
根据loginway选择注册方式(registerAction,quickregisterAction,registerByContactAction,logincodeverifyAction)

应用:

1、线上用户注册新的qunar账号

用户中心登录注册整理相关推荐

  1. WEB前后端交互原型通用元件库、常用组件、信息输出、信息输入、信息反馈、综合系列、页面交互、首页、分类页、内容详情、用户中心、注册登录、找回密码、元件库、web元件库、rplib、axure

    WEB前后端交互原型通用元件库.常用组件.信息输出.信息输入.信息反馈.综合系列.页面交互.首页.分类页.内容详情.用户中心.注册登录.找回密码.元件库.web元件库.rplib.axure原型 we ...

  2. html登陆注册功能实现,实现用户的登录注册功能

    在基于Spring Boot框架上,实现用户的登录注册功能, 首先分析前期所需要的规划. 1 实现登录注册 前端向后端发起post请求 2用户密码安全性 密码是不推荐明文入库的,在后台采取秘钥加加不可 ...

  3. A091_hrm07_用户中心_注册

    目录 1.内容 2.用户站点搭建 2.1.用户站点搭建 2.2.创建工程 2.3.相关组件集成 2.4.基础代码生成 2.5.表分析 2.6.位状态 2.7.生成代码 3.门户-用户前端搭建 3.1. ...

  4. MVC框架实现用户的登录注册功能

    MVC是什么? MVC,全称model view controller-模型,视图,控制器 model是将数据库中的表到Java中变成实体类 view是编写JSP页面 controller是用来业务逻 ...

  5. SSM框架实现用户查询、注册、登录——IDEA整合Spring、Spring MVC、Mybatis 框架

    目录 零.前言 一.说明 1.整合说明 2.最终目标 3.数据库准备 二.搭建整合环境 1.创建 maven 工程 2.导入依赖坐标 3.创建java和resources文件夹 4.创建类和接口文件 ...

  6. 亿级用户中心的设计与实践

    -     前言    - 用户中心是互联网最为基础的核心系统,随着业务和用户的增长,势必会带来不断的挑战.如何在亿级的情况下保证系统的高可用,高性能以及高安全,本文能够给你一套实践方案. 注1:本文 ...

  7. WordPress主题 wpdx 响应式CMS/Blog 含用户中心主题[v3.6版]

    现用主题 wpdx 也已更新至 3.6 版本,在原有横向布局(主菜单在左边)的基础上,再添加垂直布局(主菜单在上方),每种布局都有 5 种配色,选择更自由!同时主菜单已经支持 3 级菜单啦!依旧响应式 ...

  8. javaweb+servlet+mysql登录+注册+增删改查源码

    一.项目功能简介 功能流程图 源码: 百度网盘链接:https://pan.baidu.com/s/1QpbX1Sz0nZJwlvzEvx7zEw  提取码:ynzu 数据库: 链接:https:// ...

  9. 表单实现登录注册功能

    为了开发出一个家教信息服务网站,家教注册登录,家教信息发布这些都需要通过表单还实现. 系列文章汇总: 一.整体设计:家教信息服务平台的开发 二.前端设计:表单实现登录注册功能 三.后台设计:MySQL ...

最新文章

  1. Flask-RESTful 快速入门
  2. linux系列之: 你知道查看文件空间的两种方法吗?
  3. Cannot start compilation:the output path is not specifired for module “xxx“.Specify the output path
  4. 除外存外 微型计算机的存储系统一般指,除外存之外,微型计算机的存储系统一般指()...
  5. html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航
  6. 调用百度 Echarts 显示重庆市地图
  7. Angular 小试牛刀[1]:Getting Started
  8. Centos 7编译安装 LAMP 环境
  9. 《Head First设计模式》 读书笔记03 装饰对象
  10. 机器学习深度学习知识点总结
  11. 17.1加入主题模型的文本增强
  12. mtk充电电流文件_MT2503 系列充电电流问题
  13. java分页查询代码实现
  14. 西门子定时器有几种_西门子定时器类型
  15. Vue+elementUI导出xlsl表格,支持复杂表头,自动合拼单元格。xlsx+file-saver插件
  16. Android中调用百度翻译Demo
  17. vue websocket实现消息推送和语音提醒功能
  18. 螺旋矩阵(Java)
  19. ModuleNotFoundError: No module named ‘official‘
  20. tiktok设备注册

热门文章

  1. 在磨金石教育学室内设计靠谱吗?学费贵吗?老师负责吗?
  2. ComboxBox 调整字体
  3. gitlab 完整部署实例
  4. 【蓝桥杯】第十四届模拟赛第一期及第二期填空汇总
  5. 大专计算机专业考英语师范研究生,我是计算机专业大专生,我想考人力资源管理研究生,现在已经工作一年多了,可以考吗,考的话难吗?...
  6. C/C++/Java/Go/Rust,Python喊你来打擂:3秒钟内统计出小于1亿的素数个数
  7. SQL Server如何设置账号密码
  8. C语言实现数独小游戏
  9. iPhone或iPad如何在App Store(苹果应用商店)下载不同国家地区(如美区)的app
  10. 关于JS调用Adobe Reader ActiveX插件,在web环境下调用本地打印机执行静默打印的实现