美文网首页
Java-token

Java-token

作者: 07120665a058 | 来源:发表于2018-05-08 09:33 被阅读165次

    token基础

    生成token

    private String generateToken(Long userId) throws UnsupportedEncodingException {
            String secret = "secret";
            HashMap<String, Object> map = new HashMap<>();
            map.put("userId", userId);
            String jwt = Jwts.builder()
                    .setClaims(map)
                    .signWith(SignatureAlgorithm.HS512, secret.getBytes("UTF-8"))
                    .compact();
            return jwt;
        }
    

    解析token

    Claims getClaimsFromToken(String token) {
        Claims claims;
        try {
            claims = Jwts.parser()
                    .setSigningKey(secret)
                    .parseClaimsJws(token)
                    .getBody();
        } catch (Exception e) {
            claims = null;
        }
        return claims;
    }
    

    问题 : 在退出登录 / 修改密码时怎样实现JWT Token失效?
    回答 : 退出登录时, 只要客户端丢弃Token,服务器端不需要丢弃Token

    问题 : 要是用户已经在多设备登录了,而且本地保存了token。当一个地方丢弃token,只有token没有过期,那之前token还是可以用
    回答:数据库建一个表user_token(uid,token),用户登录成功将token存到数据库,用户登出清除token,每次对比传过来的token和该用户在数据库的token是否相同,保证一个uid只生成一个token。

    问题 : 如果在服务端存储token,那随便存储个字符串也可以,不一定要用token

    JWT只不过提供了一种基于token的请求验证机制,但用户权限,API权限,资源权限等限制可以用Spring Security来实现。

    相关文章

      网友评论

          本文标题:Java-token

          本文链接:https://www.haomeiwen.com/subject/eiqirftx.html