资讯专栏INFORMATION COLUMN

JWT开发工具

张率功 / 2856人阅读

摘要:简介为网络应用环境间传递声明而执行一种基于开放标准认证用户身份信息认证成功,才可获取其它资源,如用户登录最重要作用对信息防伪的原理一个由三个部分组成公共部分私有部分签名部分。

1.简介:

(1.1)JWT(Json Web Token):

              为网络应用环境间传递声明而执行一种基于JSON开放标准

(1.2)JWT认证用户身份信息:

              认证成功,才可获取其它资源,如:用户登录

(1.3)JWT最重要作用:

              对 token信息防伪

(1.4)JWT的原理:

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

              base64编码得到JWT

              如图:       

      

            (1.4.1)公共部分

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

                            Key=ATGUIGU

             (1.4.2)私有部分

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

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

             (1.4.3)签名部分

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

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

                            最终组成:key+salt+userInfo è token!

                            base64编码:并不是加密,只是把明文信息变成了不可见的字符串

                            但是其实只要用一些工具就 ,可以把base64编码解成明文

                            所以不要在JWT中放入涉及私密信息

2.官网:

    JSON Web Token Introduction - jwt.iohttps://jwt.io/introduction

3.SpringBoot集成JWT:

  (2.1)pom.xml文件:

                            io.jsonwebtoken            jjwt        

  (2.2)业务编写:

        import io.jsonwebtoken.*;        import org.springframework.util.StringUtils;        import java.util.Date;​        /**         * JWT生成token工具类         */        public class JwtHelper {​            //过期时间            private static long tokenExpiration = 24*60*60*1000;            //签名秘钥            private static String tokenSignKey = "123456";​            //根据参数生成token            public static String createToken(Long userId, String userName) {                String token = Jwts.builder()                        .setSubject("项目名或其它")                        .setExpiration(new Date(System.currentTimeMillis() +                                      tokenExpiration))                        .claim("userId", userId)                        .claim("userName", userName)                        .signWith(SignatureAlgorithm.HS512, tokenSignKey)                        .compressWith(CompressionCodecs.GZIP)                        .compact();                return token;            }​            //根据token字符串得到用户id            public static Long getUserId(String token) {                if(StringUtils.isEmpty(token)) return null;​                Jws claimsJws =                                             Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(token);                Claims claims = claimsJws.getBody();                Integer userId = (Integer)claims.get("userId");                return userId.longValue();            }​            //根据token字符串得到用户名称            public static String getUserName(String token) {                if(StringUtils.isEmpty(token)) return "";​                Jws 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, "lucy");                System.out.println(token);                System.out.println(JwtHelper.getUserId(token));                System.out.println(JwtHelper.getUserName(token));            }        }

  (2.3)业务测试:

                在需要生成token调用JWT工具类生成即可

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122096.html

相关文章

  • songEagle开发系列:Vue + Vuex + Koa 中使用JWT认证

    摘要:一前言,是为了在网络环境间传递声明而执行的一种基于的开放标准。用户签发添加中间件校验判断是否可用获取解密,获取用户名和认证失败中添加处理此处在开发时需要过滤掉登录接口,否则会导致验证永远失败。前端处理前端开发使用的是,发送请求使用的是。 一、前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519)。 JWT不是一个新...

    suosuopuo 评论0 收藏0
  • 如何在SpringBoot中集成JWT(JSON Web Token)鉴权

    摘要:在使用非对称加密算法进行签名的时候,还可以用于验证的发件人是否与中申明的发件人是同一个人。如果没有用非对称加密算法的话,把复制之后直接可以去官网在线解析。 这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token)。 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具,首先得知道以下几个问题。 这...

    yeyan1996 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<