Egg.js中Cookie读取undefined问题解决

Egg.js中Cookie读取undefined问题解决

前言

最近在写单点登录过程中需要保存用户的登录信息token到cookie中,使cookies能够在相同二级域名下实现共享,从而在client1上登录之后,client2能够实现免登录进入主页中。

问题

但是在该过程中遇到了一个问题,成功配置了域名后,client1登录后的cookie能够共享到client2,且client2后端也能够读到该cookie,但是在读取cookie中的token时,为undefined,读取不到。

解决方法

该问题还真的是为难了我好几天(主要原因自己太菜),终于在阅读了一位大佬的博客,以及对官方文档的理解之后,发现是参数设置的问题。

1 配置参数

Cookie 与 Session.
在使用共享cookie的时候必须要设置的几个参数,其中httpOnly需要设置为false,signed需要设置为false,域名要设置为共享cookie页面的域名
此处有一个问题是,encrypt参数的设置默认为false所以这里没有设置,如果设置为true也会读不到token这个原因我在官网上也没找到,可能是加解密的问题。

var token = this.ctx.cookies.set('token', {
      // 只允许服务端访问cookie
      httpOnly: false,
      // 对cookie进行签名,防止用户修改cookie
      signed: false ,
      //设置键值对生效的域名,默认没有配置,可以配置成只在指定域名才能访问。
      domain:'.g3s.com',
      //设置键值对生效的 URL 路径,默认设置在根路径上(/),也就是当前域名下的所有 URL 都可以访问这个 Cookie。
      path:'/'
    });

以下为官网的解释因此,前面一定要设置为false。
Egg.js中Cookie读取undefined问题解决_第1张图片

2 参数一致

eggjs踩坑之路 跨域cookie篇.
在所有提到了cookie的位置都需要对参数进行设置,get函数中的参数需要与set函数中的参数一致,不然的话也会出现undefined的情况。

你可能感兴趣的:(cookie,nodejs)