JWT浅了解

发布时间 2023-11-13 20:16:43作者: 天启A

JWT通过数字签名的方式(让我想起了软考),以json对象为载体,在不同的服务终端之间安全传输信息

是一种授权认证

生成token的原理:通过header的加密方式,对payload进行加密。然后把header和payload再次加密生成signature

贴一下我的settoken

return JWT.create().withAudience(userId) //这里是payload 设置了jwt的audience声明,aud表示该JWT所面向的用户,userId表示用户
                .withExpiresAt(DateUtil.offsetHour(new Date(),2))  //这里是payload,设置了jwt的过期时间
                .sign(Algorithm.HMAC256(password));  //这里是signature,对jwt进行签名

 很明显,我上述没有设置header,一般情况下jwt库会默认提供一组合式的header参数,比如"alg":"HS256",表示使用HMAC SHA-256算法进行签名

如果需要自定义Header,可以使用.withHeader(Map<String, Object> header)方法来设置

 

如何根据token获得当前用户

HttpServletRequest r=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
            token=r.getHeader("token");
token=r.getParameter("token");
String adminId=JWT.decode(token).getAudience().get(0);

 

前端如何获取token:将token和用户信息在登录时一起放在localStorage中,在每次发请求时取出localStorage。