8.11面试题
jwt介绍:
jwt全称json web token,由Header,Payload,Signature三部分组成。
Header主要存放令牌的类型和签名的生成算法(比如:HS256、RSA等等),payload存放token携带的信息(用户名,过期时间),signature是以header和payload加密生成的签名(过程不可逆,保证信息无法被篡改)。
注意:只能保证信息不能被篡改,但是可以被解析出来,一般不要存放密码。
jwt适用场景:
一次性校验:用户注册后邮件激活,邮件中有一个链接,用来标识用户,具有时效性,不可被篡改,非常适合使用jwt;
resuful api的无状态认证,token自身包含了身份验证所需要的所有信息,服务端不需要存储session信息,减轻服务器压力;
单点登录,如果用session,就需要把用户的session信息在多台服务上面进行同步;
无状态和有状态:
无状态:服务端没有保存客户端的状态信息,所以客户端的每个请求都必须带着自己的状态信息,所以可以被任意服务器应答(便于实现负载均衡。)
有状态:服务端保存了客户端的状态信息,服务端会通过客户端传递的sessionID在server中的session作用域涨到之前交互的信息,并以此来实现应答,所以客户端只能由某一个服务器进行应答。
优缺点