使用JWT

JWT的介绍参考这里:什么是 JWT – JSON WEB TOKEN

之前我们的web应用使用session来维持用户与服务器之间的关系,其原理是使用一段cookie字符与服务器中的一个Map来对应,Map<cookie,UserInfo>,用户每次交互需要带一个sessionid过来。如果不使用分布式session,一旦服务器重启session会丢失,这样会影响用户体验,甚至影响业务逻辑。如果把用户信息存在客户端就没这个问题了。

easyopen创建JWT方式如下:

  1. Map<String, String> data = new HashMap<>();
  2. data.put("id", user.getId().toString());
  3. data.put("username", user.getUsername());
  4. String jwt = ApiContext.createJwt(data);

这段代码用在用户登录的时候,然后把jwt返回给客户端,让客户端保存,如H5可以存在localStorage中。

客户端传递jwt方式:

  1. method.setRequestHeader("Authorization", "Bearer " + jwt);

即在header头部添加一个Authorization,内容是"Bearer " + jwt

客户端请求过来后,服务端获取jwt中的数据:

  1. // 获取jwt数据
  2. Map<String, Claim> jwtData = ApiContext.getJwtData();