用户中心登录注册整理

登录:
登录方式 实现逻辑
手机动态密码登录
  •  
  • 调用服务层的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账号
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值