【发布时间】:2020-11-01 22:47:02
【问题描述】:
我正在为我的 Vue.js 应用程序实现导航保护,检查用户是否登录。我认为最好的方法是询问 Axios 是否有会话 cookie。像这样的:
router.beforeEach((to, from, next) => {
if (Vue.axios.hasSessionCookie())
next()
else
next(false);
}
当然,hasSessionCookie() 不存在,而且我在文档中也没有看到类似的东西。有没有办法,也许通过某种扩展?
是的,我知道我可以将登录状态存储在 VueX 商店中。我认为这不是一个好主意,因为如果用户以其无限的智慧刷新页面并因此重置应用程序,则状态将重置。我想到的另一个解决方案是应用程序可以“询问”是否已登录的后端端点。但这也很蹩脚。
【问题讨论】:
-
首先如何设置cookie?是来自使用
document.cookies的客户端 cookie 吗? -
这是一个来自 Node.js / Express 后端的会话 cookie。 Axios 捕获它并且会话有效。但是好像没办法问axios有没有session cookie。
-
如果是服务器端会话cookie,则无法从客户端javascript检查它,您需要向您的快速服务器发出额外的HTTP请求以检查服务器端会话cookie 有效/存在。
-
你的意思是没有办法验证它。我不想验证,只检查会话是否存在。这是一个前端导航守卫,不是关键的东西。
-
您可以通过开发者控制台在您的 Web 上尝试
console.log(document.cookie)并查看您的 cookie 值是否存在吗?