cookie、session、token、jwt

四种认证方式区别:cookie、session、token、jwt

1、cookie:由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的。Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。比如判断用户是否是第一次访问网站。目前最新的规范是RFC 6265,它是一个由浏览器服务器共同协作实现的规范。 Cookie的处理分为: 服务器像客户端发送cookie 浏览器将cookie保存 之后每次http请求浏览器都会将cookie发送给服务器端
2、session: 为什么要有session的出现? 答:是由于网络中http协议造成的,因为http本身是无状态协议,这样,无法确定你的本次请求和上次请求是不是你发送的。如果要进行类似论坛登陆相关的操作,就实现不了了。session生成方式? 答:浏览器第一次访问服务器,服务器会创建一个session,然后同时为该session生成一个唯一的会话的key,也就是sessionid,然后,将sessionid及对应的session分别作为key和value保存到缓存中,也可以持久化到数据库中,然后服务器再把sessionid,以cookie的形式发送给客户端。这样浏览器下次再访问时,会直接带着cookie中的sessionid。然后服务器根据sessionid找到对应的session进行匹配; 还有一种是浏览器禁用了cookie或不支持cookie,这种可以通过URL重写的方式发到服务器;
3、token: 访问资源的令牌 验证流程: 1.把用户的用户名和密码发到后端 2.后端进行校验,校验成功会生成token, 把token发送给客户端 3.客户端自己保存token, 再次请求就要在Http协议的请求头中带着token去访问服务端,和在服务端保存的token信息进行比对校验。
4、JWT: java web token 的缩写,可使用restful接口定义,也可以用在web中 段落引用组成: header 在header中声明一些信息 payload、
签证 验证流程:
1.段落引用在头部信息中声明加密算法和常量, 然后把header使用json转化为字符串 2.段落引用在载荷中声明用户信息,同时还有一些其他的内容;再次使用json 把载荷部分进行转化,转化为字符串 3.使用在header中声明的加密算法和每个项目随机生成的secret来进行加密, 把第一步分字符串和第二部分的字符串进行加密, 生成新的字符串。词字符串是独一无二的。 4.解密的时候,只要客户端带着JWT来发起请求,服务端就直接使用secret进行解密。
特点: 1.三部分组成,每一部分都进行字符串的转化 2.解密的时候没有使用数据库,仅仅使用的是secret进行解密。 3.JWT的secret不能泄密