您的位置:首页 > 其它

用户中心登录注册整理

2015-10-19 18:51 761 查看


登录:

登录方式实现逻辑
手机动态密码登录调用服务层的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账号

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: