本人nodejs初学者,第一次使用node做项目。获取项目数据需要token认证,后台设置token过期时间为七分钟,当用户访问时默认使用访客账号去获取token并存入cookie设置过期时间为五分钟。当cookie失效时需要自动转发请求获取新token替换保存。转发请求用的request模块。本人的做法:用app.use做了一个路由的中间件,判断cookie里的token是否存在,存在的话next(),不存在转发请求获取token并存入cookie。这样有一个问题,每当用户第一次访问,cookie是undefined,页面没法取到数据,然后渲染模版报错,需要再次刷新一次才能获取到cookie把数据渲染出来。当cookie过期时也是同样。求大神帮忙,解答。万分感激🙏
先看一下我理解的对不对:
第一次请求时,cookie中没有token,然后你的中间件会去获取token并存入cookie中,但是你后续的逻辑处理可能依赖cookie中的token,所以第一次会失败
如果是我描述的那样,那你就改一下,在这个中间件中把token挂在req
、ctx
或其他什么东西上,后续逻辑直接依赖这上面的token
tips:token一般是经过某种身份验证后发放的,你这里并没有相关描述,考虑一下为什么会用到token?
后台怕接口被别人破解,造成数据损失。所以在所有接口都加了token认证
@Shasharoman 谢谢解答,理解的完全正确,但是我换成session存储就没问题了
1、 session:req.session.token = ‘xxx’,就是把数据挂在req上~
2、“所有接口都加了token认证”---但token谁都可以获取,又如何防止数据流失呢?
token最多做个用户身份验证。更好的数据安全保障可通过API签名验证请求,但也做不到绝对可靠
来自✨ Node.js开源项目精选✨
可以参考微信或支付宝的API 签名 机制,若数据不想明文输出的话,可以考虑rsa加密。
@Shasharoman 不好意思,上次回复的描述可能不正确。具体为何要加一层token,有什么用,我也是第一次接触。做为新手对这种安全性的东西也不太了解。还请多多包涵、指教~