JWT简单使用
依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
配置
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger2.enabled}")
private Boolean enabled;
@Bean
public Docket createRestApi() {
ParameterBuilder token = new ParameterBuilder();
List<Parameter> pars = new ArrayList<>();
token.name("Authorization").description("token 信息").modelRef(new ModelRef("String"))
.parameterType("header").required(false).build();
pars.add(token.build());
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.enable(enabled)
.select()
.apis(RequestHandlerSelectors.basePackage("com.fjw.admin"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);
}
public ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Test在swagger2构建api接口文档 " + "\t" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()))
.description("Test 项目 ")
.version("1.0")
.termsOfServiceUrl("www.baidu.com")
.build();
}
}
测试类
@RestController
@RequestMapping("/jwt")
public class JwtTest {
private static long tokenExpiration = 24*60*60*1000;
private static String tokenSignKey = "123456";
@GetMapping("/createToken")
public String testCreateToken(){
String token = Jwts.builder()
.setHeaderParam("typ", "JWT")
.setHeaderParam("alg", "HS256")
.setSubject("jwt-test")
.setExpiration(new Date(System.currentTimeMillis() + tokenExpiration))
.claim("nickname", "fjw")
.claim("avatar", "1.jpg")
.signWith(SignatureAlgorithm.HS256, tokenSignKey)
.compact();
System.out.println(token);
return token;
}
@GetMapping("/getToken")
public String testGetUserInfo(@RequestHeader("authorization") String authorization){
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(tokenSignKey).parseClaimsJws(authorization);
Claims claims = claimsJws.getBody();
String nickname = (String)claims.get("nickname");
String avatar = (String)claims.get("avatar");
System.out.println(nickname);
System.out.println(avatar);
return nickname+":"+avatar;
}
}