一、简介
使用Spring Cloud 微服务开发项目,进行身份认证,将身份认证放在网关中做,实现统一的身份认证。使用JWT(Json Web Token)作为身份认证, jwt身份认证方式主要的特点是无状态,把信息放在客户端,服务器端不需要保存session,适合在分布式环境下使用。
二、使用步骤
1.引入库
pom.xml引入依赖:
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.10.0</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.netflix.zuul</groupId>
<artifactId>zuul-core</artifactId>
</dependency>
2.启动类注解
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
@EnableFeignClients
@EnableDiscoveryClient //开启服务注册功能
public class AppZuulApplication {
public static void main(String[] args) {
SpringApplication.run(AppZuulApplication.class, args);
}
}
3.生成Token
用户登录时,服务器根据用户唯一标识生成token,将其存在redis缓存中,并设置过期时间;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;
public class JWTUtil {
private static final String USER_INFO_KEY = "phone";
@Value("${secretKey:!@#$%^&*}")
private String secretKey;
@Value("${issuser:mark}")
private String issuser;
@Value("${tokenExpireTime:43200}")//12小时
private int tokenExpireTime;
/**
* 生成Token
*
* @param issuser 签发者
* @param phone 用户手机号
* @param secretKey 签名算法以及密匙
* @param tokenExpireTime 过期时间
* @return
*/
public static String generateToken