专业手机网站建设多少钱,耒阳市建设局网站,wordpress主页文章页,网站优化公司上海目录 
会话技术 Cookie 
Session 
JWT 
JWT生成 
JWT校验 会话技术 会话 打开浏览器#xff0c;访问web服务器的资源#xff0c;会话建立#xff0c;直到有一方断开连接#xff0c;会话结束。在一次会话中可以包含多次请求与响应 会话跟踪 一种维护浏览器的方法 服务器需要…目录 
会话技术 Cookie 
Session 
JWT 
JWT生成 
JWT校验 会话技术 会话 打开浏览器访问web服务器的资源会话建立直到有一方断开连接会话结束。在一次会话中可以包含多次请求与响应 会话跟踪 一种维护浏览器的方法 服务器需要识别多次请求是否来自于同一浏览器 以便在同一次会话的多次请求间共享数据 会话跟踪方案          客户端会话跟踪技术 Cookie         服务端会话跟踪技术 Session         令牌技术 Cookie 优点  HTTP协议中支持的技术 缺点 移动端App无法使用Cookie          不安全用户可以自己禁用Cookie         Cookie不能跨域(跨域  协议IP/域名端口中有不同的) Slf4j
RestController
public class SessionController {GetMapping(/c1)public Result cookie1(HttpServletResponse response){response.addCookie(new Cookie(login_username,awaw));return Result.success();}GetMapping(/c2)public Result cookie2(HttpServletRequest request){Cookie[]cookies  request.getCookies();for(Cookie cookie : cookies){if(cookie.getName()  login_username ){System.out.println(login_username  cookie.getValue());}}return Result.success();}
} 
Session 优点 存储在服务器 安全 缺点 服务器集群情况下无法直接使用Session         移动端App无法使用Session          不安全用户可以自己禁用Session         Session不能跨域 Slf4j
RestController
public class SessionController {GetMapping(/s1)public Result session1(HttpSession session){log.info(HttpSession-s2{},session.hashCode());session.setAttribute(loginUser,tom);return Result.success();}GetMapping(/s2)public Result session2(HttpServletRequest request){HttpSession session  request.getSession();log.info(HttpSession-s2{},session.hashCode());Object loginUser  session.getAttribute(loginUser);log.info(loginUser: {},loginUser);return Result.success(loginUser);}
} 
JWT Json Web Token 定义了一种简洁的自包含的格式用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在这些信息是可靠的  组成         第一部分 header 头记录令牌类型签名算法等         第二部分 Payload 有效载荷携带一些自定义信息默认信息等         第三部分 Signature 签名防止Token被修改确保安全性。将headerPayload加入执行密匙通过指定签名算法计算而来 在pom.xml中引入JWT令牌依赖 dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion0.9.1/version/dependency 
JWT生成 
SpringBootTest
class SpringbootMybatisCrudApplicationTests {Autowiredprivate EmpMapper empMapper;Testpublic void testGenJwt(){MapString,Objectclaims  new HashMap();claims.put(id,1);claims.put(name,tom);String jwt   Jwts.builder().signWith(SignatureAlgorithm.HS256,awaw)//签名算法.setClaims(claims)//自定义内容(载荷).setExpiration(new Date(System.currentTimeMillis()  3600 * 10000))//有效期.compact();System.out.println(jwt);}
} JWT校验 JWT检验时使用的签名秘钥必须和生成JWT令牌时使用的秘钥是配套的  SpringBootTest
class SpringbootMybatisCrudApplicationTests {Autowiredprivate EmpMapper empMapper;Testpublic void testParseJwt(){Claims claims  Jwts.parser().setSigningKey(awaw)//指定签名密匙.parseClaimsJws(eyJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoidG9tIiwiaWQiOjEsImV4cCI6MTcwNDY0NjU4OH0.EKF6hnJvMExOBaJHE71OZmQBN0Sbcc3sH9FHkBq8sDY)//解析令牌.getBody();System.out.println(claims);}
}