zoukankan      html  css  js  c++  java
  • 学习JWT

    JWT : JSON WEB TOKEN

    JWT的定义:

    JSON Web令牌(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑而独立的方法,用于在各方之间安全地将信息作为JSON对象传输。 由于此信息是经过数字签名的,因此可以被验证和信任。 可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公用/专用密钥对对JWT进行签名。

    令牌token:是一个String字符串,由3部分组成,中间用“.”隔开
    令牌组成:

    • 标头(Header)
    • 有效载荷(Payload)
    • 签名(Signature)

    token格式:head.payload.singurater 如:xxxxx.yyyy.zzzz

    数据流:
    image

    JWT的依赖:

    <!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
    <dependency>
        <groupId>com.auth0</groupId>
        <artifactId>java-jwt</artifactId>
        <version>3.10.3</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt -->
    <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
    </dependency>
    

    案例:

    String md5Pwd = MD5Utils.md5(pwd);
    if (md5Pwd.equals(users.get(0).getPassword())){
        JwtBuilder jwtBuilder = Jwts.builder();
        String token = jwtBuilder.setSubject(username)//主体,就是token中携带的数据
                .setIssuedAt(new Date())//设置token生成时间
                .setId(users.get(0).getUserId().toString())//设置用户id为token的id
                .setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000))//token过期时间
                .signWith(SignatureAlgorithm.HS256, "Yuan")//设置加密方式和加密密码
                .compact();
    
    return new ResultVO(ResStatus.OK,token,users.get(0));//返回给前端的信息
    

    Token和Session的区别:

    • Token这个字符串包含了更多的信息,比如用户的id、角色等,别人拿到这个串,就能拿到这些关键的业务信息,从而避免再通过数据库查询等方式才能得到它们。且JWT是可以跨平台使用的(JSON串)
    • Session是一个简单的字符串,本身没有什么特别含义
  • 相关阅读:
    智能客户端请教
    C++位运算 (转并完善)
    Virtual PC 上网设置(宿主机为win7)
    Opencv2.0 lib和dll的编译获取过程 以及 vs2005,vs2008配置过程
    SQL Server 查询处理中的各个阶段(SQL执行顺序) 转
    Win32汇编项目总结——猎杀潜航
    sql server忘记sa密码的解决方法
    ODBC导出Excel遇到的表名错误问题解决(excel 2007)
    Opencv在MFC客户端的Picture控件上显示图片
    忘记深拷贝的后果
  • 原文地址:https://www.cnblogs.com/whyblogs/p/15038799.html
Copyright © 2011-2022 走看看