用户登录认证的方式演变

1.传统的session校验机制

①用户向服务器发送用户名和密码

②验证服务器后,用户信息将保存到session中

③服务器会把session_id写入到用户的Cookie。

④用户后续每个请求都将通过在Cookie中取出session_id传给服务器

⑤服务器收到session_id并对比之前保存的数据,确认用户的身份。

##

这种模式最大的问题是,没有分布式架构,无法支持横向扩展。

如果是单服务器部署,该模式完全没有问题。

但是,如果它是服务器集群部署的话,则不能满足要求。

2.简单token校验机制(需要分布式数据库占用服务器性能)

基于token的认证:近些年来基于token的认证开始成为主流,比较简单的token就是使用一个全局唯一的字符串用来标识哪些是用户,然后把这个字符串key=token,value=userId存在Redis中,每次请求的时候拦截,判断Redis中是否有这个Token或者是其他的一些校验,如果满足才能访问我们后续的业务功能。

##

这种模式的话需要一个统一的token数据库(一般使用redis来存储)来保存会话数据实现共享,这样负载均衡下的每个服务器才可以正确的验证用户身份。

3.基于JWT的校验机制

基于token的校验机制类似于http协议的无状态,它不需要在服务端去保留用户的认证信息或者是会话信息。这就意味着JWT认证机制的应用不需要去考虑用户在哪一台服务器上登录了,这就为应用的扩展提供了便利。

流程是这样的:

用户使用用户名密码来请求服务器登录

服务器进行验证用户的信息

服务器通过验证发送给用户一个JWT

客户端存储JWT,并在每次请求时附送上这个JWT值

服务端验证JWT值,通过后放行处理具体业务

4.JWT是什么

JWT全称JSON Web Tokens,是一种规范化的token。是对token这一技术提出一套规范,只有满足规范才能使用。可实现跨域验证

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部