Blog

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

jwt

发表于 2019-09-04 分类于 jwt 阅读次数:
本文字数: 3k

简介

官方网址

阮一峰

JwtUtils

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package com.example.demo.jwt;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.HashMap;

/**
* @Auther: Yang
* @Date: 2019/9/4 13:10
* @Description:
*/
@Component
public class JwtUtils {

private static String SECRET = "mySecret";
private static Long EXPIRATION_REMEMBER = 604800L * 1000;

/***
* 生成token
* @param openId
* @return
*/
public static String createToken(String openId) {
HashMap<String, Object> claim = new HashMap<>();
claim.put("openId", openId);
return Jwts.builder()
.signWith(SignatureAlgorithm.HS256, SECRET)//设置签名算法和签名密码
.setClaims(claim)//设置自定义数据
.setIssuer("yang")//设置签发人
.setIssuedAt(new Date())//设置签发时间
.setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_REMEMBER))//设置过期时间
.compact();
}

/***
* 通过token先获取claims然后从claims中获取openid
* @param token
* @return
*/
public static String getOpenId(String token) {
Claims claims = getClaimsFromToken(token);
if(claims != null){
String openId = (String) claims.get("openId"); //try catch
return openId;
}
return "";
}

/***
* 通过secret获取token中的claim
* @param token
* @return
*/
public static Claims getClaimsFromToken(String token) {
Claims claims;
claims = Jwts.parser()
.setSigningKey(SECRET)
.parseClaimsJws(token)
.getBody();
return claims == null ? null : claims;
}


/***
* 验证token是否过期
* @param token
* @return
*/
public static Boolean validateToken(String token){
Claims claims = getClaimsFromToken(token);
Date expiration = claims.getExpiration();
return expiration.after(new Date());
}
}

controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@GetMapping("token")
public String getToken() {
String token = JwtUtils.createToken("yb");
return token;
}

@GetMapping("checktoken")
public ResponseEntity checkToken(HttpServletRequest request) {
HashMap<Object, Object> map = new HashMap<>();
String token = request.getHeader("jwtToken");
System.out.println(token);
if (token !=null && !token.isEmpty()) {
//校验token是否过期,若过期,则重新登录,否则获取openId
if (JwtUtils.validateToken(token)) {
map.put("success", "验证成功");
return new ResponseEntity(map, HttpStatus.OK);
} else {
map.put("error", "token失效");
return new ResponseEntity(map, HttpStatus.UNAUTHORIZED);
}
} else {
map.put("error", "token为空");
return new ResponseEntity(map, HttpStatus.UNAUTHORIZED);
}
}

------ 已触及底线感谢您的阅读 ------
麻辣香锅不要辣 微信支付

微信支付

  • 本文作者: 麻辣香锅不要辣
  • 本文链接: https://http://ybhub.gitee.io/2019/09/04/jwt/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
# jwt
springboot_jpa
mybatis_generator
  • 文章目录
  • 站点概览
麻辣香锅不要辣

麻辣香锅不要辣

21 日志
11 分类
20 标签
GitHub 简书
  1. 1. 简介
  2. 2. JwtUtils
  3. 3. controller
© 2019 – 2020 麻辣香锅不要辣 | 站点总字数: 20.4k字
|
0%