跨域
修改网关配置文件
spring:
application:
name: gateway-notzull-server
cloud:
gateway:
routes:
- id: user-server
# uri: http://127.0.0.1:9004
uri: lb://user-consumer-fegin
predicates:
- Path=/user-server/**
filters:
- RewritePath=/user-server/(?<segment>.*), /$\{
segment}
- name: RequestRateLimiter
args:
# key-resolver: '#{@pathKeyResolver}' # 使用SpEL从容器中获取对象
key-resolver: '#{@userKeyResolver}' # 使用SpEL从容器中获取对象
redis-rate-limiter.replenishRate: 1 # 令牌桶每秒填充平均速率
redis-rate-limiter.burstCapacity: 3 # 令牌桶的总容量
JWT
SON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息
一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名
构成
- 头部
头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSON对象。
{“typ”:“JWT”,“alg”:“HS256”}
在头部指明了签名算法是HS256算法。 我们进行BASE64编码http://base64.xpcha.com/,编码后的字符串如下:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码
- 载荷(playload)
载荷就是存放有效信息的地方。这个名字像是特指飞机上承载的货品
- 签证(signature)
JWT使用
创建token
依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.0</version>
</dependency>
测试代码
public class JwtTest {
/****
* 创建Jwt令牌
*/
@Test
public void testCreateJwt(){
JwtBuilder builder= Jwts.builder()
.setId("888") //设置唯一编号
.setSubject("小白") //设置主题 可以是JSON数据
.setIssuedAt(new Date()) //设置签发日期