JWT全称Json Web Token, 是当今较为流行的一种认证方式。相比于传统的session认证方式,jwt在设计之初便强调“无状态”,即服务端不会存储任何的认证信息,只扮演一个签发令牌的角色。
本文着重阐述一下具体的实现方法。
基本流程
1,首先在服务器收到登录的请求时,会检查请求头中是否含有令牌(显而易见的是,首次登录必然没有)。服务器会在验证账号密码都通过的情况下,生成一个token(即令牌),添加到响应头中返回给客户端。
2,客户端在收到token之后,之后的每一个请求都需要在请求header中带上这个token用以验证身份。
3,当token失效时,服务器通知客户端令牌过期,重新发送登录请求获取新的token。
需要的依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.1.0</version>
</dependency>
生成token
public static String getToken(final String userId,final String role) {
String token = null;
try {
Long currentTime = System.currentTimeMillis();
String tokenId = new String