本文你能学到什么?token的组成 JWT token的组成头部(Header),格式如下: eyJhbGciOiJIUzI1NiJ9
有效载荷(Playload): eyJ1c2VyaWQiOjB9
签名(Signature): token在服务与客户端的交互流程1:客户端通过用户名和密码登录 关于Token的思考服务如何判断这个token是否合法? token中能放敏感信息吗? Token的优点(1)相比于session,它无需保存在服务器,不占用服务器内存开销。 Java实例:JWT token使用部分代码来自互联网,找不到原作者了。。 public class JavaWebToken { private static Logger log = LoggerFactory.getLogger(JavaWebToken.class); //该方法使用HS256算法和Secret:bankgl生成signKey private static Key getKeyInstance() { //We will sign our JavaWebToken with our ApiKey secret SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary('bankgl'); Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName()); return signingKey; } //使用HS256签名算法和生成的signingKey最终的Token,claims中是有效载荷 public static String createJavaWebToken(Map
编写登录Conreoller,在服务器端给客户返回token. public LoginStatusMessage checkUserAndPassword( @RequestParam(value='username',required=true) String username, @RequestParam(value='password',required=true) String password,User user,HttpServletRequest request) throws Exception{ User u = new User(); //登录成功 if((u = userService.checkUsernameAndPassword(user)) != null){ Map
在拦截器中对请求中的Token验证(部分代码,表示下意思): String token = request.getParameter('token'); if(JavaWebToken.parserJavaWebToken(token) != null){ //表示token合法 return true; }else{ //token不合法或者过期 return false; }
|
|