CNode

node使用jwt,如何刷新token

问答
Bbroncoss发布于9 年前最后回复9 年前16 回复14969 浏览0 收藏

通过npm install jsonwebtoken安装,调用它的sign可以生成一个具有过期时间的token,使用verify可以验证token是否有效。但是发现该模块不具有refresh token的机制,那么该如何在token过期之前,刷新token?

查看回复

回复 (16)

B
broncoss#1·9 年前

自顶

Z
zhengguorong#2·9 年前

貌似没法刷新的,我的做法是直接替换,前端在接收到返回头有token,就替换。因此,前端网络层的封装是很重要的,可以统一处理

B
broncoss#3·9 年前
引用 zhengguorong貌似没法刷新的,我的做法是直接替换,前端在接收到返回头有token,就替换。因此,前端网络层的封装是很重要的,可以统一处理

@zhengguorong 也就是在verify的时候判断下token是否过期,如果过期直接生成一个新的token返回,然后前端用新的token继续访问?

Z
zhengguorong#4·9 年前

@broncoss 是啊,看你具体设计吧,如果你判断过期就生成给他,那他的状态永远都不过期,我开发的时候token一般还往数据库放一份,这样就可以踢人下线了

A
AberGLJ#5·9 年前

不能理解

B
broncoss#6·9 年前
引用 AberGLJ不能理解

@AberGLJ 目的就是想在token过期之前,刷新token

B
backsapce#8·9 年前

你可以把jwt设置为无expire

B
broncoss#9·9 年前
引用 backsapce你可以把jwt设置为无expire

@backsapce 那这和用jwt和不用jwt有什么区别呢

A
Aoqin#10·9 年前

直接在生成一次token不行吗

来自酷炫的 CNodeMD

A
Aoqin#11·9 年前

而且token可以包含自定义数据,你可以拿这些数据做很多功能了

来自酷炫的 CNodeMD

Z
zhengguorong#12·9 年前

@broncoss 你可以做过期判断,如果有效期在1小时以内,就重新生成给前端,如果已经过期了,那就让前端重新登陆。 这样做是为了保证前端用户在正常操作的时候不至于因为token过期被踢出去,同时保证了安全性(不会导致token被嗅探后,被重复利用)

Z
zhengguorong#13·9 年前

@backsapce 这样就不安全了,因为token有可能会被嗅探,所以需要加上过期时间,但是如果固定过期时间,有可能导致用户访问中途突然失效,因此需要刷新token

jwt生成的token实在是太长了,这东西吹的太大了,感觉真不适合做token来使用,尤其是在移动网络下,流量是必须要考虑的一个大问题,这么长的一个token,并且每次网络请求都要带上,太浪费了。倒是觉得做一些简单的数据加密解密倒是蛮适合的。

I
imbooo#16·9 年前

我的做法是过期时间放在redis,每次访问刷新过期时间。持续访问token就一直不过期。

参与回复
登录后即可参与回复。登录