【发布时间】:2020-02-21 20:06:40
【问题描述】:
我正在尝试设置从我的 Node.js 后端到我的 Vue 前端的 OAuth 服务。目前,后端似乎工作正常;我能够使用我的 google 帐户成功进行身份验证,然后在身份验证后重定向到相应的 UI 视图。 cookie 也正在存储中。
- 我的节点服务在 localhost:3000 上运行
- 我的 Vue UI 在 localhost:8080 上运行
我可以使用
document.cookie,它显示:
"express:sess=<Data here>; express:sess.sig=<Data here>"
问题是我使用vue-cookies,无法使用window.$cookies.get(...);检索cookie
在我的main.js 文件中,我正在导入 vue-cookies:
import VueCookies from "vue-cookies";
Vue.use(VueCookies);
window.$cookies.config("7D", "", "localhost");
new Vue({
router,
store,
vuetify,
render: h => h(App)
}).$mount("#app");
这是我使用该代码的router/index.js:
import Vue from "vue";
...
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
debugger;
if (!window.$cookies) {
next({
path: "/login",
params: { nextUrl: to.fullPath }
});
} else {
const cookie = window.$cookies;
if (to.matched.some(record => record.meta.isAdmin)) {
if (cookie.isAdmin) {
next();
} else {
next({
path: "/login",
params: { nextUrl: to.fullPath }
});
}
} else {
next();
}
}
} else {
next();
}
});
如果我尝试记录window.$cookies.get("express:sess"),它会返回null。不知道我做错了什么。我知道window.$cookies 也是从控制台定义的,因为我可以看到该对象的所有方法/属性。
如果我从开发者工具创建一个名为“test”的 cookie,我可以检索它:
> window.$cookies.get("test")
> "value"
编辑:
如果我将手动创建的 cookie 更改为名称为 test:test,则输出为空! : 字符是否与我无法检索 cookie 的原因有关??
> window.$cookies.get("test:test")
> null
编辑 2: 我可以执行以下操作并查看 cookie 存在,但由于某种原因无法访问它们。
window.$cookies.keys()
(3) […]
0: "express:sess"
1: "express:sess.sig"
2: "test"
length: 3
【问题讨论】:
-
您可以在控制台中尝试
document.cookie并检查您的值吗? -
@Rayon 我确实尝试过,请参见上文 :) 我确实得到了适当的响应,但我试图避免自己实现 cookie 解析器。
标签: javascript node.js vue.js cookies