账号系统登录流程

摘要:
如果是客户端,则可以在登录后维护登录状态;如果是web前端,请使用AccessToken或Session来维护登录状态。如果令牌不为空且密码为空,则表示用户上次登录时选中了“记住我”。判断令牌的有效期。如果未过期,则返回“登录成功”,否则返回“登录过期,请重新登录”。或者,您可以使用标记来区分由于服务器判断令牌已过期而导致的密码登录失败,然后客户端删除令牌。

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

免责声明:文章转载自《账号系统登录流程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF中TreeView的展开 (转)mysql如何修改所有的definer下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

API接口之安全篇

APP、前后端分离项目都采用API接口形式与服务器进行数据通信,传输的数据被偷窥、被抓包、被伪造时有发生,那么如何设计一套比较安全的API接口方案呢? 一般的解决方案如下: 1、Token授权认证,防止未授权用户获取数据; 2、时间戳超时机制; 3、URL签名,防止请求参数被篡改; 4、防重放,防止接口被第二次请求,防采集; 5、采用HTTPS通信协议,防...

OAuth 2.0: Bearer Token Usage

  Bearer Token (RFC 6750) 用于OAuth 2.0授权访问资源,任何Bearer持有者都可以无差别地用它来访问相关的资源,而无需证明持有加密key。一个Bearer代表授权范围、有效期,以及其他授权事项;一个Bearer在存储和传输过程中应当防止泄露,需实现Transport Layer Security (TLS);一个Beare...

【转】WEB测试要点总结

一、输入框 1、字符型输入框: (1)字符型输入框:英文全角、英文半角、数字、空或者空格、特殊字符“~!@# ¥%……&*?[]{}”特别要注意单引号和&符号。禁止直接输入特殊字符时,使用“粘贴、拷贝”功能尝试输入。 (2)长度检查:最小长度、最大长度、最小长度-1、最大长度+1、输入超工字符比如把整个文章拷贝过去。 (3)空格检查:输入的...

Consul Windows集群搭建ACL Token验证

前言: 由于网关将使用负载均衡进行解压,搭建多个服务器站点,所有学习了Consul服务发现,分享下自己在搭建中所遇到的问题 以及过程分享 前期准备: 由于本人公司电脑硬件硬盘比较差 ,只准备了两台机器 机器Ip 及端口 端口号 客户端类型 节点/服务名称 192.168.1.78 8500 Sever c1(Leader) 192.168.1....

php api接口安全设计 sign理论

一. url请求的参数包括:timestamp,token, username,sign 1. timestamp:         时间戮 2. token:       登陆验证时,验证成功后,生成唯一的token(可以为uuid),并把token储存到缓存(redis)里 ,键为username,值为token 3. username:      用...

三个给进程提权的方法 (c/cpp)

三个给进程提权的方法 方法一: C/C++ code bool EnableDebugPrivilege() { HANDLE hToken; LUID sedebugnameValue; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCur...