Kong的插件: session

session的简述

session和cookie都是用来解决HTTP的连接时无状态的问题。比如我们常见的登录问题,如果没有session和cookie机制我们每次都要输入用户和密码。
cookie是把状态信息保留在客户端,一旦cookie创建,浏览器就会给每次请求添加上cookie的请求头,当cookie的信息比较大时,这无形给每次请求增加了负担。
session是把用户的状态信息保留在服务端,把sessionID发送给客户端并保存在cookie中,这种每次请求的时候,用户只需带着sessionID过来就行了。session无疑增加了服务端的负担,比如要根据sessionID查询session的信息,session的维护(定时清理等)。

Kong的session插件,说几点
  • 存储
    Kong支持两种session的存储方式cookie和kong。kong的方式是把session的状态存储在Kong的数据库中(pg或者Cassandra);cookie的方式是把信息存储在客户端,这个是在用户第一次访问的时候,会返回一个Set-Cookie的头给客户端。
  • 过期时间
    Kong的session插件有两个参数config.cookie_lifetime和config.cookie_renew。cookie_renew是说多久重建一次session,如果session重建了,客户端存储的cookie就失效了,服务端会再次返回Set-Cookie请求头。
    cookie_lifetime是指session的最终过期时间,这个参数我没理解透,我的理解是:如果我们访问过程中session发生了重建,那么cookie_lifetime就会被重置。后面是官方的解读,如果有更好的理解请告诉我呀,万分感激:
    Sessions will use the built-in Kong DAO ttl mechanism which destroys sessions after specified cookie_lifetime unless renewal occurs during normal browser activity.
  • cookie跨域
    Kong设置了三个参数Strict,Lax, off。每个请求其实是有两个属性起源域名origin和目的域名destination,当origin和destination不一样时就是跨域请求了。
    Strict,当origin和destination不一样时就不会发送该cookie
    Lax, 当origin和destination不一样时,会有一种情况就是origin是其他的域名,destination是本域名(Kong的8000端口所在的域名),这种情况会发送cookie
    off, 不管情况都会发送
做个小实验
  • 环境准备
    你需要有一个service和route,如果没有的话,参考https://blog.csdn.net/u014686399/article/details/100084613,我的试验也是基于这个
  • 启用插件
/services/4abd8249-936a-477d-ac3e-7b21a00aa3f6/plugins POST
{
	"name":"session",
	"config":{
		"storage": "kong",
		"cookie_secure": false
	}
}

  • 4abd8249-936a-477d-ac3e-7b21a00aa3f6 这是服务的id
  • storage 使用Kong的存储
  • 测试
    首次访问
curl -i -X GET     --url http://172.16.0.92:31545/xjj_example/main?apikey='U3FffwYrxdvEtNmevAmWMiXpZ3pQiwNv'
  • 我添加了key-auth插件所以我的请求要添加apikey,如果你没有添加key-auth插件,就不用添加这个头

在这里插入图片描述

  • 我们带着cookie来访问
curl -i -X GET \
    --url http://172.16.0.92:31545/xjj_tv/main?apikey='U3FffwYrxdvEtNmevAmWMiXpZ3pQiwNv' \
     -H "session=G6mKAW9_Hsavn4nXrR60Uw..|1567138877|XKFcMNdtQcn84jw8eIlMg5sLjwE.; Path=/; SameSite=Strict; HttpOnly"

在这里插入图片描述

  • Kong的session插件的 logout
    这个我没研究明白,请各位大神指点一下

先写到这里了,有问题进QQ群630300475

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值