用户中心登录注册整理
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账号
相关文章推荐
- 如何将虚拟机中的内网IP设置成固定的
- Sqlserver__数据表排序记录和界面显示排序记录不一致的问题
- WPF 键盘全局接收消息
- AndroidWear开发之HelloWorld篇
- 借刀杀对象--Raii技法(C++版)
- 1026. 程序运行时间(15)
- AndroidWear开发之开发环境[前奏]
- my_bolg
- 透视投影模式下近剪裁面剪裁要在剪裁空间进行而不能推迟到归一化设备空间
- I2C从驱动到应用(上篇)
- ExpandableListView的用法(类似QQ好友展示)
- 特征描述之LBP算子
- 解决 Agreeing to the Xcode/iOS license requires admin privileges
- 让div居中
- 日志规范
- Hibernate数据库配置文件中数据库名称错误问题
- 整数、单精度浮点数和双精度浮点数在计算机中的存储格式
- unbuntu下安装伪分布式Hbase
- hdu5266pog loves szh III(RMQ+LCA)
- iOS 9适配技巧(更新版)