zoukankan      html  css  js  c++  java
  • app与php后台接口登录认证、验证(seesion和token)

    jwt验证token

    JWT 除了前两段 header, payload 之外, 还有第三段: 签名服务端签发 JWT 时, 会用自己的密钥(对称 /非对称皆可)生成一个签名, 收到 token 时只需要验签通过即认为合法, 而验签是一个无状态的过程.

    一、登录机制

    登录可分为三个阶段(登录验证、登录持续、退出登录);登录验证指客户端提供账号/密码(或第三方平台(微信、qq)获取openid/unionid)向服务器提出登录请求,服务器应答请求判断能否登录并返回相应数据;登录持续指客户端登录后, 服务器能够分辨出已登录的客户端,并为其持续提供登录权限的服务器。退出登录指客户端退出登录状态。方案,客户端登录成功后, 服务器为其分配seesionId和token, 客户端每次请求资源时都带上sessionId和token验证,当sessionId失效带上token重新获取sessionId从而获取相应资源;

    1.1 登录状态seesionId

    登录状态指,客户端登录情况(登录中,未登录);简单登录流程如下:

    • 客户端向服务器第一次发起登录请求(不传输用户名和密码)。
    • 服务器利用RSA算法产生一对公钥和私钥。并保留私钥, 将公钥发送给客户端。
    • 客户端收到公钥后, 加密用户密码, 向服务器发起第二次登录请求(传输用户名和加密后的密码)。
    • 服务器利用保留的私钥对密文进行解密,得到真正的密码。
      登录成功后,服务器在session中分配一个Id记录客户端访问状态;

    1.2 身份验证token

    token就是令牌,最大的特点就是随机性,不可预测;从上面流程可知,单单一个sessionId判断用户的登录状态及身份并不可取;为此需要token进行身份审核;并且token存活时间应比sessionId长;因为sessionId一旦实效,就可以通过token来保持登录状态;

    二、用户登录

    2.1 登录验证

    app登录方式如开头所说,主流三种:微信、QQ、账号/密码;首次验证是通过数据的匹配;匹配成功服务器返回唯一的sessionId和token,防止用户信息的泄露;期间,建议token存活时间应比sessionId长;因为sessionId一旦实效,就可以通过token来维持登录状态;

    2.2 登录持续

    sessionId记录着客户端登录状态,保存在服务器session中;可想而知当session过了存活期时就会失效,通过token重新获取sessionId;保证登录状态的延续;

    2.3 退出登录

    sessionId注销;

  • 相关阅读:
    《需求工程-软件建模与分析之读书笔记之五》
    Neo4j (3.3.9)的学习之路(1)
    大数据培训第一天总结
    京东B2B业务架构演变阅读心得
    小米网抢购系统开发实践阅读心得
    余额宝技术架构及演进阅读心得
    美图数据统计分析平台架构演进阅读心得
    荔枝架构实践与演进历程阅读心得
    去哪儿网支付系统架构演进全历程阅读心得
    基于SOA质量属性的系统构架分析与实践
  • 原文地址:https://www.cnblogs.com/caibaotimes/p/13945089.html
Copyright © 2011-2022 走看看