🌈键盘敲烂,年薪30万🌈
目录
许多网页都会设置登录界面,我们点击登录会发生什么逻辑?
假如我登录成功之后直接复制URL地址再次访问是再次登录还是直接访问到页面?
我们登录网页之后,每次点击网页的功能就向服务端发送一次请求,服务端接收请求会校验该请求,如果用户存在,响应请求。
用户初次登录服务器,服务器回响一个信息,这个信息就是用来标识用户的,可以是cookie、session,可以是JWT令牌。
用户再次发送请求,请求头中就会携带标识用户信息,服务器识别该信息,判断是否应该响应此请求。而这个判断的过程有个专业术语叫会话跟踪技术
📕会话:
📕会话跟踪:
📕会话跟踪方案:
📕会话跟踪方案对比
这就是经过编码加密得到的一个JWT令牌,就是一串字符串
注意:
- JWT校验时使用的签名秘钥,必须和生成JWT令牌时使用的秘钥是配套的。
- 如果JWT令牌解析校验时报错,则说明 JWT令牌被篡改 或 失效了,令牌非法。
JWT令牌在请求头中携带,名为token。
①获取请求对象
②获取请求头中的token
③解析map集合,获取数据
- @Autowired //直接注入一个请求对象
- HttpServletRequest httpServletRequest;
-
- //例如获取 操作人ID
- String jwt = httpServletRequest.getHeader("token");
- Claims claims = JwtUtils.parseJWT(jwt);
- //解析map结合
- Integer id = (Integer) claims.get("id");
服务器是如何实现数据共享的?
客户端第一次发送请求,服务端会下发JWT令牌,当客户端再次发送请求时,服务器会校验JWT令牌,响应请求,从而不用二次登录,实现数据共享。
JWT技术优缺点?
优点:
简单轻量:使用JSON格式进行传输,易于实现和使用,高安全性:加密算法防止篡改令牌,Base64编码保护个人信息安全,跨平台支持:JWT令牌可以在Web、移动端和服务端使用。
缺点:
如何生成令牌、如何校验都需要程序员手动实现。