龙华做网站天无涯网络,做外国网站怎么买空间,温州建网站公司,专业网站建设公司兴田德润怎么样传统的session认证 我们知道#xff0c;http协议是一种无状态的协议#xff0c;这就意味着当用户向我们的应用提供了用户名和密码进行用户认证#xff0c;那么在下一次登录的时候#xff0c;用户还要再进行验证#xff0c;因为根据http协议#xff0c;浏览器并不知道是谁…传统的session认证 我们知道http协议是一种无状态的协议这就意味着当用户向我们的应用提供了用户名和密码进行用户认证那么在下一次登录的时候用户还要再进行验证因为根据http协议浏览器并不知道是谁发出的请求所以为了能够让浏览器识别出是哪个用户发出的请求我们需要在服务器端存储一份用户登录的信息这份信息会在响应时传递给浏览器告诉其被保存为cookie,以便下次请求时发送给我们的应用这样浏览器就可以知道是哪个用户登录了。 但这种基于session的认证使应用难以得到扩展随着不同客户端用户的增加独立的服务器无法承载越来越多的用户信息而这时候基于session认证应用的问题就会暴露出来。
基于session认证应用的问题
Session
每个用户经过我们的应用认证之后应用都要在服务端做一次记录以方便用户下次请求的鉴别通常而言 session 都是保存在内存中 而随着认证用户的增多服务端的开销会明显增大。
扩展性
用户认证之后服务端做认证记录如果认证的记录被保存在内存 中的话这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源这样在分布式的应用上相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。
CSRF (跨站请求伪造) 因为是基于 cookie 来进行用户识别的, cookie 如果被截获用户就会很容易受到跨站请求伪造的攻击。 基于token的认证
基于token的鉴权机制类似于http协议也是无状态的它不需要在服务端保留用户的认证信息或者会话信息这就意味着基于token认证机制的应用无需考虑用户在哪一台服务器登录这就问应用的扩展提供了便利性。
token的工作流程 1. 用户使用账号和密码发出 post 请求 2. 服务器使用私钥创建一个 jwt 3. 服务器返回这个 jwt 给浏览器 4. 浏览器将该 jwt 串在请求头中像服务器发送请求 5. 服务器验证该 jwt 6. 返回响应的资源给浏览器 使用token的目的是为了减轻服务器的压力减少频繁的查询数据库使服务器更加健壮。 token的定义Token是服务端生成的一串字符串以作客户端进行请求的一个令牌当第一次登录后服务器生成一个Token便将此Token返回给客户端以后客户端只需带上这个Token前来请求数据即可无需再次带上用户名和密码。