JWT(Json Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。比如用在用户登录上。

JWT最重要的作用就是对 token信息的防伪作用。

JWT的原理:

一个JWT由三个部分组成:公共部分、私有部分、签名部分。最后由这三者组合进行base64编码得到JWT。

  1. 公共部分

主要是该JWT的相关配置参数,比如签名的加密算法、格式类型、过期时间等等。

Key=ATGUIGU

2.私有部分

用户自定义的内容,根据实际需要真正要封装的信息。

userInfo{用户的Id,用户的昵称nickName}

3.签名部分

SaltiP: 当前服务器的Ip地址!{linux 中配置代理服务器的ip}

主要用户对JWT生成字符串的时候,进行加密{盐值}

最终组成 key+salt+userInfo----》token!

base64编码,并不是加密,只是把明文信息变成了不可见的字符串。但是其实只要用一些工具就可以把base64编码解成明文,所以不要在JWT中放入涉及私密的信息。

springboot整合jwt步骤:

首先引入依赖:

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
</dependency>

然后在util包里面编写JwtHelper工具类:

public class JwtHelper {
    private static long tokenExpiration = 24*60*60*1000;
    private static String tokenSignKey = "123456";

public static String createToken(Long userId, String userName) {
        String token = Jwts.builder()
                .setSubject("HAS")
                .setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
                .claim("userId", userId)
                .claim("userName", userName)
                .signWith(SignatureAlgorithm.HS512, tokenSignKey)
                .compressWith(CompressionCodecs.GZIP)
                .compact();
        return token;
    }
    public static Long getUserId(String token) {
        if(StringUtils.isEmpty(token)) return null;
        Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        Integer userId = (Integer)claims.get("userId");
        return userId.longValue();
    }
    public static String getUserName(String token) {
        if(StringUtils.isEmpty(token)) return "";
        Jws<Claims> claimsJws

= Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);
        Claims claims = claimsJws.getBody();
        return (String)claims.get("userName");
    }
    public static void main(String[] args) {
        String token = JwtHelper.createToken(1L, "55");
        System.out.println(token);
        System.out.println(JwtHelper.getUserId(token));
        System.out.println(JwtHelper.getUserName(token));
    }
}

注意:helper类中userId、userName根据自己业务进行修改即可

springboot整合jwt相关推荐

  1. SpringBoot 整合JWT实现基于自定义注解的-登录请求验证拦截(保姆级教学,附:源码)

    学习目标: Spring Boot 整合JWT实现基于自定义注解的 登录请求接口拦截 例: 一篇掌握 JWT 入门知识  1.1 在学习SpringBoot 整合JWT之前,我们先来说说JWT进行用户 ...

  2. SpringBoot整合JWT实现登录认证

    目录 什么是JWT 为什么使用JWT JWT的使用场景 JWT的结构 JWT的请求流程 SpringBoot整合JWT 引入依赖 编写配置文件 token生成与验证工具类 拦截器拦截token 设置拦 ...

  3. 教你 Shiro + SpringBoot 整合 JWT

    本篇文章将教大家在 shiro + springBoot 的基础上整合 JWT (JSON Web Token) 如果对 shiro 如何整合 springBoot 还不了解的可以先去看我的上一篇文章 ...

  4. SpringBoot整合JWT实现API身份校验

    上一个项目采用的是session存储uid的方式来确认API调用方的合法身份,这次的app则打算采用token的方式进行身份校验,此二者的优缺点有很多博客进行了论述,这里就不谈了. 本文中的代码以及部 ...

  5. SpringBoot 整合 JWT 实现 Token 验证

    前言 在Spring Security整合oauth2实现认证token也不满足实际生产需求的时候,可以整合Jwt实现token认证,完全手写获取token,认证token的方法. Maven依赖包 ...

  6. JWT,springboot整合JWT完成token的验证,token的使用,java架构师技术栈

    /** @author dugt1998@163.com @date 2020/11/8 12:40 */ public class JWTUtils { //签名 自己项目中的签名 private ...

  7. 数据权限过滤_带你实现SpringBoot整合JWT+Shiro进行权限认证「附源码地址」

    JWT JSON Web Token(JWT)是一个非常轻巧的规范.这个规范允许我们使用 JWT 在用户和服务器之间传递安全可靠的信息. 我们利用一定的编码生成 Token,并在 Token 中加入一 ...

  8. springboot整合jwt与vue的后端管理系统1

    该项目使用技术springboot.security.redis.mybatis-plus 第一步:在idea中新建一个springboot项目,在pom.xml文件导入相应的依赖jar <de ...

  9. springboot整合JWT使用

    @RestController @Slf4j public class UserController {@Resourceprivate UserService userService;@GetMap ...

最新文章

  1. matlab 基于Topsis的熵权法2
  2. python语言程序设计基础网课-Python语言程序设计基础答案
  3. 常见计算机问题 内存篇
  4. dijkstra最短路径算法视频_java实现Dijkstra算法求最短路径
  5. 优化order by语句
  6. design短语的用法总结_design的意思、用法、搭配和例句
  7. Spring Boot笔记-通过反射获取Spring Boot中的Bean(反射调用Service)
  8. 你不可不知的HTML优化技巧
  9. Julia: save 和load的用法 和与Matlab的效率比较
  10. 【路径规划】基于matlab人工势场法机器人自动避障【含Matlab源码 620期】
  11. Python 网络爬虫实战:如何下载小红书去水印图片
  12. [Chrome插件] SelectJd(京东自营筛选器) v1.0.0 发布
  13. 微信h5开发遇到的小问题
  14. 小程序嵌套h5页面_小程序内嵌H5的方法介绍
  15. 立秋养生,老话说“三不吃、三不做、三不睡”,精神饱满健康过秋
  16. Altium Designer之多图纸设计
  17. php euc-cn,php配置中文解说
  18. 最近很火的ChatGPT和GPT4
  19. ios打没有签名的ipa包
  20. Pygame详解(七):key 模块

热门文章

  1. 二元置信椭圆r语言_一般加性模型的简介、应用举例及R语言操作
  2. 关于RD和RT的意义
  3. 无线局域网和蜂窝移动网络_广场无线AP覆盖系统解决方案
  4. Promise、THEN链的穿透/顺延机制、关于Promise.all/any/race 三个方法的研究、AJAX的串行和并行
  5. 毕业设计 远程智能浇花灌溉系统 - stm32 单片机 嵌入式 物联网
  6. 5e平台能在linux,国服玩家正常使用5E对战平台的指引
  7. 【JavaLearn】(22)jQuery介绍、选择器、事件、动画、DOM编程、操作CSS、表单验证
  8. 3w字 长文干货!100 道 Linux 常见面试题
  9. 一维激波管(Lax shock tube)问题的数值求解
  10. 量化分析师的Python日记【第1天:谁来给我讲讲Python?】