1、依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
版本过高时,添加如下依赖
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
2、控制器测试代码
package com.tcdri.smartlab.controller;
import com.tcdri.smartlab.utils.aboutResult.ResultMap;
import io.jsonwebtoken.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.val;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@RestController
@RequestMapping("/token")
@Api(tags = {"token测试部分"})
@CrossOrigin
public class UserTokenController {
// private long time=1000*60*60*24;
private long time=1000*30;
private String signature="admin";
@ApiOperation(value = "获取token")
@GetMapping(value = "/setToken")
public ResultMap setToken(){
JwtBuilder jwtBuilder= Jwts.builder();
String jwtToken=jwtBuilder
//header
.setHeaderParam("typ","JWT")
.setHeaderParam("alg","HS256")
//payload
.claim("username","tom")
.claim("role","admin")
.setSubject("admin-test")
.setExpiration(new Date(System.currentTimeMillis()+time))
.setId(UUID.randomUUID().toString())
//signature
.signWith(SignatureAlgorithm.HS256,signature)
.compact();
return ResultMap.SUCCESS.setNewData(jwtToken);
}
@ApiOperation(value = "获取token")
@GetMapping(value = "/getToken/{token}")
public ResultMap getToken(@PathVariable("token") String token){
JwtParser jwtParser=Jwts.parser();
Jws<Claims> claimsJws=jwtParser.setSigningKey(signature).parseClaimsJws(token);
Claims claims=claimsJws.getBody();
List<Object> result=new ArrayList<Object>();
result.add(claims.get("username"));
result.add(claims.get("role"));
result.add(claims.getId());
result.add(claims.getSubject());
result.add(claims.getExpiration());
return ResultMap.SUCCESS.setNewData(result);
}
@ApiOperation(value = "验证token")
@GetMapping(value = "/checkToken")
public boolean checkToken(@RequestHeader("tp_token") String token){
if(token==null){
return false;
}
try {
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(signature).parseClaimsJws(token);
} catch (Exception e) {
return false ;
}
return true;
}
}