zoukankan      html  css  js  c++  java
  • 使用jwt

    jwt:json web token

    使用jwt的好处
    1,无状态
    2解耦
    3,更适合于移动端Android,ios
    4,性能更好
    5,能够不考虑csrf攻击

    maven依赖

           <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt</artifactId>
                <version>0.6.0</version>
            </dependency>

    ①,客户端请求

            Date date = new Date();
            JwtBuilder signWith = Jwts.builder()
                                    .setId("2")//id
                                    .setSubject("冬马")//名字
                                    .setIssuedAt(date)//创建时间
                                    .signWith(SignatureAlgorithm.HS256,"salt")//签名算法,盐
                                    .claim("role", "admin")//添加自定义属性
                                    .setExpiration(new Date(date.getTime() + 1000 * 60))//一分钟过期
                                    ;
            
            System.out.println(signWith.compact());

    ②,服务端接收

        Claims body = Jwts.parser().setSigningKey("salt")
            .parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIyIiwic3ViIjoi5Yas6amsIiwiaWF0IjoxNTQyODY0NzA5LCJyb2xlIjoiYWRtaW4iLCJleHAiOjE1NDI4NjQ3Njl9.cjALFF2h3YC5LwffcYSoEyRd9q14CT60Gp1dg5hf8vU") 
            .getBody();
            System.out.println("用户id:"+body.getId());
            System.out.println("用户名:"+body.getSubject());
            System.out.println("发布时间:"+body.getIssuedAt());
            System.out.println("过期时间:"+body.getExpiration());
            System.out.println("角色:"+body.get("role"));
  • 相关阅读:
    yocto添加源码并编译进文件系统
    yocto编译加速及单独编译内核与uboot
    mysql 创建索引
    redis初使用
    mysql修改时区
    linux修改时间
    服务器环境配置安装(mysql+redis+nodejs+nginx)
    由于找不到MSVCP20.dll,无法继续执行代码
    sequelize初使用
    css flex
  • 原文地址:https://www.cnblogs.com/dongma/p/10002301.html
Copyright © 2011-2022 走看看