电脑网站编程,做网站教学书,南京一站式工程装饰装修网站,成都品牌设计公司有哪些目录
实现思路
会话跟踪的三个方案--引出Jwt令牌技术
1.访问cookie的值,在同一会话的不同请求之间共享数据
2.session
3.现代普遍采用的令牌技术--JWT令牌
JWT令牌技术
第一步--生成令牌
1.引入依赖
2.生成令牌
第二步--校验令牌
第三步--登录下发令牌 需要解决的…
目录
实现思路
会话跟踪的三个方案--引出Jwt令牌技术
1.访问cookie的值,在同一会话的不同请求之间共享数据
2.session
3.现代普遍采用的令牌技术--JWT令牌
JWT令牌技术
第一步--生成令牌
1.引入依赖
2.生成令牌
第二步--校验令牌
第三步--登录下发令牌 需要解决的问题:用户在未登录状态下,也可以通过访问网址直接跳过登录界面 实现思路 通过登录成功的标记来检测,在每个接口前做一个标记判断是否登录,若没登录则返回错误信息,并使前端退出 但这样较为繁琐,因此我们可以通过一种统一拦截的技术来拦截所有请求.这涉及到了会话跟踪这一技术. 会话跟踪的三个方案--引出Jwt令牌技术 1.访问cookie的值,在同一会话的不同请求之间共享数据 跨域:只要协议/IP地址/端口三个维度任何一个不同,就是跨域操作
2.session 3.现代普遍采用的令牌技术--JWT令牌 JWT令牌技术
一个令牌包含三个部分:头/有效载荷/签名:防止令牌被篡改 核心的两个步骤: 生成令牌 校验令牌 第一步--生成令牌
1.引入依赖 2.生成令牌 1.签名算法 2.自定义内容 3.令牌有效期 以下为测试样例:
Testpublic void JwtTest(){MapString, Object claims new HashMap();claims.put(id, 1);claims.put(name, tom);/*此处负载的内容是id和姓名*/String jwt Jwts.builder()/*设置签名算法*/.signWith(SignatureAlgorithm.HS256, theresa)/*自定义内容(负载)*/.setClaims(claims)/*设置有效期为一小时*/.setExpiration(new Date(System.currentTimeMillis() 3600 * 1000)).compact();}
第二步--校验令牌
报错的两种情况:过期/被篡改
.setSigningKey()填入和开始输入的一样,签名算法 .parseClaimsJws()中填入要校验的令牌
public void ParseJwt(String jwt){//许可验证Claims claims Jwts.parser().setSigningKey(signKey)//传递签名.parseClaimsJws(jwt)//传递令牌.getBody();//得到内容System.out.println(claims);}
第三步--登录下发令牌
PostMapping(/login)public Result login(RequestBody Emp emp){log.info(员工登录:{},emp);Emp e empService.login(emp);//若登录成功,生成令牌并下发令牌if(e ! null){//定义claims携带当前登录的员工信息MapString,Object claims new HashMap();claims.put(id,e.getId());claims.put(name,e.getName());claims.put(username,e.getUsername());//此处将claims传入了我们第一步定义的生成令牌工具类中String jwt JwtUtils.generateJwt(claims);return Result.success(jwt);}//若登录失败,返回错误信息return Result.error(用户名或密码错误);}
}