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。
标签:加密,jwt,JWT,header,token,了解,payload From: https://www.cnblogs.com/kun1790051360/p/17830056.html