JWT浅了解

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

是一种授权认证

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

贴一下我的settoken

1
2
3
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获得当前用户

1
2
3
4
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。

posted @   天启A  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示