
本文共 7508 字,大约阅读时间需要 25 分钟。
������
������������������
���������������������������������������APP������WEB������������HTTP���������������������������������������������������������������������������������������������������������������������������������������������������������session���cookie������������������������
- ���������������������cookie���session���������������������������������������������session���������������������cookie���������sessionId������������������������������������������
- ���������������������������������������������������������������������������������������������������������������������������������������������������������
- ������������������������������������session������������������������������������������������������������session������������������������������������
JWT���������
JSON Web Token (JWT) ������������������������RFC 7519���������������������������������������������������������������������������������������������������������������������������������������������������������������������
JWT������������������������������������������JWT���������������������������������������������������������������JWT���������������������������������������������������JWT������������������������
JWT������������
������
- ���������������������cookie���������������������������JWT������HTTP���������������������������������������������������������������������
- ������������������������������������JWT������������������������������session���������������JWT������������������������������������������������������������������cookie������������������������������
- ���������CDN���������������������������������������������������������������������javascript���HTML���������������������������������������API���������
- ������������������������������������������������������Token���������������������������������������API������������������Token���������������
- ������������������������������������������������iOS���Android���Windows 8���������cookie���������������������Token���������������������������
- ���CSRF������������cookie������������������������������������������������
- ���������������������������������session���������������������������������������JWT���������������������������
- ������������API������������������������JSON Web Token���JWT���������������������������������������������������������������
������
- JWT������������������������������������������������������������������������������������������������_TOKEN���������������������������������������������������������������������������������������
- JWT������������������������������������������������������������������������������������������������������������JWT���������������������������������������������������������������������������������������
- ���������������������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���������������������
发表评论
最新留言
关于作者
