JWT实例TokenUtils

/**  
* 

Title: TokenUtils.java

*

Description:

*

Copyright: Copyright (c) 2017

*

Company: www.yky.com

* @author wangzhj * @date 2020年4月8日 * @version 1.0 */ package com.cjs.example.controller; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.interfaces.DecodedJWT; import com.auth0.jwt.interfaces.JWTVerifier; /** *

Title: TokenUtils

*

Description:

* @author wangzhj * @date 2020年4月8日 */ public class TokenUtils { //设置过期时间 private static final long EXPIRE_DATE=30*60*100000; //token秘钥 private static final String TOKEN_SECRET = "ZCfasfhuaUUHufguGuwu2020BQWE"; public static String token (String username,String password){ String token = ""; try { //过期时间 Date date = new Date(System.currentTimeMillis()+EXPIRE_DATE); //秘钥及加密算法 Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET); //设置头部信息 Map header = new HashMap<>(); header.put("typ","JWT"); header.put("alg","HS256"); //携带username,password信息,生成签名 token = JWT.create() .withHeader(header) .withClaim("username",username) .withClaim("password",password).withExpiresAt(date) .sign(algorithm); }catch (Exception e){ e.printStackTrace(); return null; } return token; } public static boolean verify(String token){ /** * @desc 验证token,通过返回true * @params [token]需要校验的串 **/ try { Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET); JWTVerifier verifier = JWT.require(algorithm).build(); DecodedJWT jwt = verifier.verify(token); return true; }catch (Exception e){ e.printStackTrace(); return false; } } public static void main(String[] args) { String username ="zhangsan"; String password = "123"; String token = token(username,password); System.out.println(token); boolean b = verify("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwYXNzd22yZCI6IjEyMyIsImV4cCI6MTU3ODE5NzQxMywidXNlcm5hbWUiOiJ6aGFuZ3NhbiJ9.IyTZT0tISQQZhGhsNuaqHGV8LD7idjUYjn3MGbulmJg"); System.out.println(b); System.out.println(verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6IjEyMyIsImV4cCI6MTU4NjUwNDI0MiwidXNlcm5hbWUiOiJ6aGFuZ3NhbiJ9.lLEMQCcIfajAXUeAInMMMcD5fhvhxSAsjW0gcJUtN3w")); System.out.println(verify("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6IjEyMyIsImV4cCI6MTU4NjMyODE5NSwidXNlcm5hbWUiOiJ6aGFuZ3NhbiJ9.z9yGgLXWoRsFLwZH8-N8zyqI9XxeubJRy0XD9pOoRo8")); } public static String getToken(String username,String password){ return JWT.create().withAudience(username) .sign(Algorithm.HMAC256(password)); } /* public static boolean verify2(String token) { String userId; try { userId = JWT.decode(token).getAudience().get(0); } catch (JWTDecodeException j) { throw new RuntimeException("401"); } User user = userService.findUserById(userId); if (user == null) { throw new RuntimeException("用户不存在,请重新登录"); } // 验证 token JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build(); try { jwtVerifier.verify(token); } catch (JWTVerificationException e) { throw new RuntimeException("401"); } return true; }*/ }

 

你可能感兴趣的:(java基础,安全)