我使用的是
nuxt.render
中间件来整合我的api、前端和开发环境。到目前为止,一切都很顺利,但我对我的auth设置的安全性有一些担心。
我的后端通过nuxt中间件将其用户会话注入vuex。虽然这对于限制访问非常有效,但这些文件的源代码始终可以通过直接get方法获得。(例如,如果
/admin
受到保护,
/_nuxt/admin.js
仍将可用,并将包含该页的整个源代码)。更糟的是,因为违约
preload
链接放在头由nuxt,他们将自动获取,即使没有登录。
我知道这并没有太多的安全问题,因为我的管理api调用在服务器端强制执行auth,但有时(就像我的情况一样),公开源代码是不可取的。
我想出了一个解决方案,效果很好,但并不十分优雅:
-
在
nuxt.config.js
,我设置
render.resourceHints = false
是的。我希望不必这样做就可以从可用路由的预取中获益,但似乎没有办法限制预取路由的选择。
-
堵漏前
next.render
在express的中间件链中,我有选择地限制了页面的源代码。(例如)
app.get('/_nuxt/pages/admin.js', restrict)
,其中
restrict
是返回
401
如果未通过身份验证,或调用
next()
如果是的话。这可以防止XHR获取和直接获取。)
-
我做一个习惯
error.vue
模板,我在其中捕获如果强制访问用户不应该访问的路由时nuxt将抛出的错误消息,如下所示
Loading chunk 1 failed
,并将其规范化为“禁止”错误页。
有没有一种更务实的方法让我错过了,或者这超出了nuxt.js目前提供的范围?