pom.xml中导入jjwt依赖:

<!--        jwt令牌-->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

工具类JwtUtils代码

/**
 * 获取Jwt令牌*/
public class JwtUtils {
    private static String signKey = "baiyang";
    private static Long expire = 3600000L;

    public static String gatJwt(Map<String,Object> claims){

        String jwt = Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,signKey)//签名算法
                .setClaims(claims)//自定义内容(载荷)
                .setExpiration(new Date(System.currentTimeMillis() + expire))//设置有效期为1h
                .compact();

        return jwt;
    }
}

controller层测试

@Slf4j
@RestController
public class LoginController {
    @Autowired
    private EmpService empService;


    @PostMapping("/login")
    public Result login(@RequestBody Emp emp){
        log.info("登录 : {}",emp);
        Emp e = empService.getEmp(emp);

        //登录失败, 返回错误信息
        if (e == null) return Result.error("用户名或密码错误");

        //登录成功,生成令牌,下发令牌
        Map<String, Object> claims =new HashMap<>();
        claims.put("id", e.getId());
        claims.put("username", e.getUsername());
        claims.put("password", e.getPassword());

        //jwt包含了当前登录的员工信息
        String jwt = JwtUtils.gatJwt(claims);
        log.info("jwt : {}",jwt);
        //返回jwt令牌信息
        return Result.success(jwt);
    }
}

发现报如下错误:

解决报错:

pom.xml中引入相关依赖:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.4.0-b180830.0359</version>
</dependency>

问题解决,成功生成JWT令牌

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐