欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JsonWebToken工具token认证---前后端结合使用思路

程序员文章站 2022-05-03 12:20:15
...

 

 

JsonWebToken工具结合切面token实现认证---前后端结合使用思路:

 

 

 

前后加工不一样用于安全混淆

 

后端工具生成:eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbl9jcmVhdGVfdGltZSI6MTU3MTk2Mzg5OTMwOCwic3ViIjoicm9vdCIsInRva2VuX3VzZXJfbmFtZSI6InJvb3QiLCJleHAiOjE1NzE5NjU2OTksInRva2VuX3VzZXJfcGFzc3dvcmQiOiIkMmEkMTAkbDZmTG04NnlPazcub3ByUVhMNlNmdUtRTHp0OGR0UVZtYi95QU0zVWN5b1Vvd2I4LnFOVXkifQ.sQR2JluCpm5GrNKSBDLf2k2DR89mP657rSPfj7G7784JDxkf7iJiKvduBiYZySBgJ1ygxDanoGhB3nFXkQFkfg

 

 

前面拼接:Bearer eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbl9jcmVhdGVfdGltZSI6MTU3MTk2Mzg4Mzg2Mywic3ViIjoicm9vdCIsInRva2VuX3VzZXJfbmFtZSI6InJvb3QiLCJleHAiOjE1NzE5NjU2ODMsInRva2VuX3VzZXJfcGFzc3dvcmQiOiIkMmEkMTAkbDZmTG04NnlPazcub3ByUVhMNlNmdUtRTHp0OGR0UVZtYi95QU0zVWN5b1Vvd2I4LnFOVXkifQ.ipUFgzMF_clkeks5cZUO82pmSE1M4yj_UwFQo66qJA9JH_8HZqLMyMvrfsiXa_bneXKTiKK92mYQU4qzKqaaww

 

 

1,每次刷新token都是重新生成token-不含bearer

 

返回的header中的token不含bearer--工具类直接生成的

2,后端工具类直接生成的token没有前缀 返回给前端

 

 

 

Authorization才有前缀

 

 3,String token = request.getHeader(Constants.TOKEN_HEADER_STRING);  前端把后端传递的没有前缀的token加上前缀,前端传过来的才有前缀

 

后端根据前端传过来的有前缀的反解成claim---最终那用里面的用户名,密码(map中设置),有效期(Claime中设置)等

 

 

    private Claims getClaims(String token) {

        Claims claims;

        try {

            claims = Jwts.parser()

                    .setSigningKey(SECRET.getBytes("UTF-8"))

                    .parseClaimsJws(token.startsWith(Consts.TOKEN_PREFIX) ?====================设置好了去除前缀的地方

                            token.substring(token.indexOf(Consts.TOKEN_PREFIX) + Consts.TOKEN_PREFIX.length()).trim() :

                            token.trim())

                    .getBody();

        } catch (Exception e) {

            log.warn(e.getMessage());

            claims = Jwts.parser()

                    .setSigningKey(SECRET)

                    .parseClaimsJws(token.startsWith(Consts.TOKEN_PREFIX) ?

                            token.substring(token.indexOf(Consts.TOKEN_PREFIX) + Consts.TOKEN_PREFIX.length()).trim() :

                            token.trim())

                    .getBody();

        }

        return claims;

    }

 

相关标签: 架构