JWT基本使用及常用验证方式对比
发布日期:2021-05-15 00:00:23 浏览次数:17 分类:精选文章

本文共 7508 字,大约阅读时间需要 25 分钟。

������

������������������

���������������������������������������APP������WEB������������HTTP���������������������������������������������������������������������������������������������������������������������������������������������������������session���cookie������������������������

  1. ���������������������cookie���session���������������������������������������������session���������������������cookie���������sessionId������������������������������������������
  2. ���������������������������������������������������������������������������������������������������������������������������������������������������������
  3. ������������������������������������session������������������������������������������������������������session������������������������������������

JWT���������

JSON Web Token (JWT) ������������������������RFC 7519���������������������������������������������������������������������������������������������������������������������������������������������������������������������

JWT������������������������������������������JWT���������������������������������������������������������������JWT���������������������������������������������������JWT������������������������

JWT������������

������

  1. ���������������������cookie���������������������������JWT������HTTP���������������������������������������������������������������������
  2. ������������������������������������JWT������������������������������session���������������JWT������������������������������������������������������������������cookie������������������������������
  3. ���������CDN���������������������������������������������������������������������javascript���HTML���������������������������������������API���������
  4. ������������������������������������������������������Token���������������������������������������API������������������Token���������������
  5. ������������������������������������������������iOS���Android���Windows 8���������cookie���������������������Token���������������������������
  6. ���CSRF������������cookie������������������������������������������������
  7. ���������������������������������session���������������������������������������JWT���������������������������
  8. ������������API������������������������JSON Web Token���JWT���������������������������������������������������������������

������

  1. JWT������������������������������������������������������������������������������������������������_TOKEN���������������������������������������������������������������������������������������
  2. JWT������������������������������������������������������������������������������������������������������������JWT���������������������������������������������������������������������������������������
  3. ���������������������JWT������������HTTPS���������������������������HTTP���������������������

������

������

  
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>2.2.0</version>
</dependency>

jwtUtil

  
@Component
@ConfigurationProperties("config.jwt")
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@Log4j
public class JwtUtil extends AbstractConfigProperty{
/**���������������������*/
private long expire;
/**token������*/
private String secret;
private String header;
/**���������������15���������������*/
public String sign(String username, String userId){
//������������
Date date = new Date(System.currentTimeMillis() + expire * 1000);
//���������������������
Algorithm algorithm = Algorithm.HMAC256(secret);
//���������������
Map<String, Object> header = new HashMap<>();
header.put("typ", "JWT");
header.put("alg", "HS256");
//������username���userId������������
return JWT.create()
.withHeader(header)
.withClaim("username", username)
.withClaim("userId", userId)
.withExpiresAt(date)
.sign(algorithm);
}
public boolean verify(String token){
try {
Algorithm algorithm = Algorithm.HMAC256(secret);
JWTVerifier verifier = JWT.require(algorithm).build();
DecodedJWT jwt = verifier.verify(token);
log.info("������������");
return true;
} catch (IllegalArgumentException e){
return false;
} catch (JWTVerificationException e){
return false;
}
}
}

���������

  
@Component
@Log4j
public class JwtInterceptor extends HandlerInterceptorAdapter {
@Autowired
private JwtUtil jwtUtil;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//������������
String uri = request.getRequestURI();
if (uri.contains("/login")) return true;
String token = request.getHeader(jwtUtil.getHeader());
if (StringUtils.isEmpty(token)){
token = request.getParameter(jwtUtil.getHeader());
}
log.info("token: {}", token);
if (StringUtils.isEmpty(token)){
throw new BizException(jwtUtil.getHeader() + "������������");
}
if (!jwtUtil.verify(token)){
throw new BizException(jwtUtil.getHeader() + "������������������������");
}
return true;
}
}

������������������������

  
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private JwtInterceptor jwtInterceptor;
/**������������������*/
@Override
public void addCorsMappings(CorsRegistry registry){
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "TRACE")
.allowCredentials(true)
.maxAge(3600)
.allowedHeaders("*");
}
/**���������������*/
@Override
public void addInterceptors(InterceptorRegistry registry){
registry.addInterceptor(jwtInterceptor);
}
}

������

������JWT������������������������������������������������������������������������������������������

���������JWT������������������������15������������������token���������redis���������������������������7���������������������������������20������������������������������������������������������token���������������������������������redis���������������������������������������������������token������������������������������������JWT������������������������redis���������������������

������������������������JWT���������������������������redis���������������������

上一篇:Layui动态生成下拉框
下一篇:JSONObject基本操作

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月11日 07时53分21秒