0

我有 nuxtServerInit 函数,它应该接收所有用户的浏览器数据,包括 cookie,但它不接收 auth 模块(但不是每次!)cookie(我说的是 JWT Bearer 令牌)。

async nuxtServerInit(store, { req }) {
    console.log(req.headers.cookie);
}

在正确的情况下,它将显示如下内容: i18n_redirected=en; auth.strategy=local; auth._token.local=Bearer%20eyJhbG*******

但是在其他浏览器(例如edge)中,只有在浏览器重新启动后,它才会输出:i18n_redirected=en. 但是,如果您更新站点或在另一个选项卡中打开它,那就没问题了。

我不明白为什么。它的工作方式如此随机......例如,在我的主浏览器(chrome)中,它不会在我每次启动时发送 cookie(正如我之前所说),但是,当我更新页面时,它只会发送所有内容美好的。我试图故意重复这个错误,它工作了几次,然后停止了......但它在 Edge 浏览器中不断工作。cookie 仍然像以前一样存在,但 nuxt 只是不接收它们。我没有一些特殊的 cookie 插件,一切都按其默认选项运行......

这是某种缓存还是什么?有人可以帮我解决这个问题吗?

4

1 回答 1

1

结果是 Nuxt Auth 模块将其 cookie 设置expires为空字符串,因此它毕竟只是基于会话的 cookie,它们不会根据 axios 请求发送到服务器。我必须手动将到期日期设置为 auth 模块 cookie 设置nuxt.config.js

auth: {
  ...
  cookie: {
    options: {
      expires: new Date(new Date().getTime()+20000000000).getTime(), //thats today + a year
      maxAge: 31622400
    }
  }
},

我仍然认为它不自行设置到期日期是不对的。nuxt 中所有东西的酷之处在于,许多东西都是开箱即用的,auth 模块不应该像很少使用的 nuxt 的本机功能那样工作。不得不为此浪费3个小时:(

于 2020-05-26T02:35:20.740 回答