【发布时间】:2023-04-09 23:51:01
【问题描述】:
我已经在互联网上搜索了一段时间,甚至在这里检查了所有建议的问题,但我一无所获。
基本上,我使用 vue-router 在用户单击视图时加载视图(没有预取,只是延迟加载),使用导入 Vue 视图/组件的函数。为了更好地形象化,我做了一个简单的例子来说明我在做什么:
const router = new VueRouter({
routes: [
...
{
path: "/a_page",
component: function() {
return import("./views/A_Page.vue");
}
}
]
});
我在后端使用 Express 来保护某些路由,因为在前端保护它是浪费精力,因为用户可以轻松绕过“保护”,如果他愿意的话。此外,所有视图都有自己的拆分 .js 文件(使用 "webpackChunkName"),并且 Express 需要为每个请求的 API 调用 OR .js 文件提供承载身份验证令牌标头。这适用于 Axios(负责获取 API 数据),您可以手动定义标头,但 vue-router 没有此选项,并且由于它不发送 Authorization 标头,因此不会进行身份验证,Express 会阻止带有 403 的文件并且 vue-router 无法导入该文件。
有什么方法可以将 Authorization 标头与导入一起发送(基本上只是一个 GET 请求)?
提前致谢。
如果有人认为我以错误的方式处理问题,请随时发表评论并提出其他建议。
编辑:建议的重复问题没有得到足够的关注,并且给出的唯一解决方案(基本上分为 2)不再适用于当前的 webpack; onload(event) 和 onerror(event) 未定义。
【问题讨论】:
-
您的 Express 视图是否嵌入了您想要保护的数据,或者它只是一个组件,然后从 API 请求数据?如果您真的想保护您的客户端代码,请参阅stackoverflow.com/q/49731460/2486583
-
@JamesIrwin 我不确定我是否理解正确。 Express 处理 API 和文件。所有 API 调用都对“/api/....”进行,所有文件都加载请求“/....”。 API 调用返回 JSON,文件主要是 .js 文件,其中包含 Vue 视图,然后通过 Axios 请求 API,然后填充实际数据。
-
我的想法是,如果组件不包含数据,为什么要保护组件。每个人都可以访问 Js 文件。当这些Js被加载时,它们会调用api,然后如果你没有通过身份验证或者你没有正确的权限,你会收到一个错误401或403
-
@Sodala 但是 Vue 视图即使它不包含 实际 数据,也会加载整个结构,并且攻击者(或有点过于好奇的人)可能会欺骗路由进入加载然后分析整个页面:我们有什么,我们如何排序,我们考虑什么等等。这不是我真正想要展示的东西。
标签: javascript express vue.js axios