zoukankan      html  css  js  c++  java
  • 账号系统登录流程

    客户端弹出登录弹窗,如果用户上次登录勾选了“记住我”,则默认给填上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

  • 相关阅读:
    游戏文字自动断行需要,还得从 UTF-8 讲起
    史上最明白的 NULL、0、nullptr 区别分析(老师讲N篇都没讲明白的东东),今天终于明白了,如果和我一样以前不明白的可以好好的看看...
    django -- ORM实现作者增删改查
    selenium--操作JS弹框
    selenium--多窗口操作
    django -- ORM实现图书增删改查
    django -- ORM实现出版社增删改查
    selenium--等待的三种方式
    postman使用--Monitor
    django -- 实现ORM登录
  • 原文地址:https://www.cnblogs.com/guxin/p/8507985.html
Copyright © 2011-2022 走看看