账号系统登录流程

客户端弹出登录弹窗,如果用户上次登录勾选了“记住我”,则默认给填上000000。

客户端先自行校验各项输入框的值是否符合要求,用正则表达式校验。  

如果是客户端,可以在登录后自行维护登录状态;如果是Web前端,使用Access Token或者Session维护登录状态。看具体需求。

Token的生成规则可以是:hash("sha256", user_id + timestamp + salt)

客户端发起登录请求。传参:

  • String userId 必传
  • String password 如果用户有Token,则前端的密码输入框默认填上000000(自定义的6个字节,反正显示为6个*),不传该参数;没有Token则默认输入框为空,该参数必传。
  • String machineCode 如果要做限制多端登录的话就必传机器码。由客户端代码获取并提交,不由用户填写。
  • String token 可空,如果客户端存储有就必传。如果用户上次登录时勾选了“记住我”,则服务端返回一个随机Token,客户端保存后以后每次登录都带上Token(服务端判断Token是否过期)。

后端处理流程:

  • 先根据userId判断该用户是否存在,不存在则直接返回“该用户不存在”。
  • Token不为空password错误,则返回“密码错误”。
  • 如果以上校验通过,再判断该用户是否已验证邮箱(如果需求是已验证了邮箱才能开始用的话),校验失败则返回“请校验邮箱”。
  • 如果Token不为空密码为空,说明用户上次登录时勾选了“记住我”。判断该Token的有效期,未过期则返回“登录成功”,否则返回“登录已过期,请重新登录”。

 

小结:

  • 如果客户端已有Token,则只传递userId和Token;否则传递userId和password。是否需要machineCode看具体业务需求。
  • 返回登录失败时,清空密码输入框。如果客户端已有Token,就删除Token。或者也可以用一个标记区别是因为服务端判断Token已过期导致的记住密码登录失败了,客户端再删除Token。

 

更多参考:http://blog.csdn.net/gglinux/article/details/68948901

posted @ 2018-03-05 11:15  霍莉雪特  阅读(673)  评论(0编辑  收藏  举报