Java-token

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来实现。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 继续这一个系列,基于Token的WEB后台登录认证机制(并讲解cookie和session机制)。每个后端不得不解...
    JackFrost_fuzhu阅读 18,587评论 11 80
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,319评论 0 15
  • P市地处我国中部,隶属河南省,在河南二十多个小要素中,它大概算得上一枚不发光的金子。 如果要对P市加以介绍的话,此...
    李小琣阅读 855评论 0 3
  • 他好像开始走入了一个怪圈子,整个圈子都是他自己。 每个自己都蹲在角落开始自言自语,不,更应该说自问自答。一开始,他...
    肖RONGHUI阅读 257评论 0 0

友情链接更多精彩内容