SpringBoot整合JWT的实现示例_第1页
SpringBoot整合JWT的实现示例_第2页
SpringBoot整合JWT的实现示例_第3页
SpringBoot整合JWT的实现示例_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第SpringBoot整合JWT的实现示例目录一.JWT简介二.Java实现JWT(SpringBoot方式整合)JWT总结

一.JWT简介

1.什么是JWT?

JWT(JSONWebToken)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。

它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证;应用场景如用户登录。JWT详细讲解请见github:/jwtk/jjwt

2.为什么使用JWT?

随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。

3.传统Cookie+Session与JWT对比

①在传统的用户登录认证中,因为http是无状态的,所以都是采用session方式。用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。

cookie+session这种模式通常是保存在内存中,而且服务从单服务到多服务会面临的session共享问题,随着用户量的增多,开销就会越大。而JWT不是这样的,只需要服务端生成token,客户端保存这个token,每次请求携带这个token,服务端认证解析就可。

②JWT方式校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录,验证token更为简单。

4.JWT的组成(3部分)

第一部分为头部(header),第二部分我们称其为载荷(payload),第三部分是签证(signature)。*/

//这里模拟通过用户名和密码,从数据库查询userId

//这里把userId转为String类型,实际开发中如果subject需要存userId,则可以JwtConfig的createToken方法的参数设置为Long类型

StringuserId=5+"";

Stringtoken=jwtConfig.createToken(userId);

if(!StringUtils.isEmpty(token)){

json.put("token",token);

returnResultTool.success(json);

*需要Token验证的接口

@PostMapping("/info")

publicResultBOinfo(){

returnResultTool.success("info");

*根据请求头的token获取userId

*@paramrequest

*@return

@GetMapping("/getUserInfo")

publicResultBOgetUserInfo(HttpServletRequestrequest){

StringusernameFromToken=jwtConfig.getUsernameFromToken(request.getHeader("token"));

returnResultTool.success(usernameFromToken);

为什么项目重启后,带着之前的token还可以访问到需要info等需要token验证的接口?

答案:只要不过期,会一直存在,类似于redis

}

用PostMan测试工具测试一下,访问登录接口,当对账号密码验证通过时,则返回一个token给客户端:

当直接去访问info接口时,会返回token为空的自定义异常:

当在请求头加上正确token时,则拦截器验证通过,可以正常访问到接口:

当在请求头加入一个错误token,则会返回token失效的自定义异常:

接下来测试一下获取用户信息,因为这里存的subject为userId,所以直接返回上面写死的假数据5:

JWT总结

1.基于JSON,所以JWT是可以进行跨语言支持的,像JAVA,JavaScript,Node.JS,PHP等很多语言都可以使用。

2.payloa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论