【发布时间】:2017-06-25 03:51:28
【问题描述】:
我正在尝试使用 react+redux 创建一个网站。 我已经在服务器上设置了 jwt 身份验证。 我想做的是延迟加载我的一些组件/容器和减速器,以便它们只能由经过身份验证的用户下载。我已经知道如何对未经身份验证的用户(客户端)隐藏组件,但我更愿意阻止他们下载相关的 javascript 代码。
我正在使用 webpack,我已经研究过 react-router 和 require-ensure (https://stackoverflow.com/a/33044701/2920112),但这种方法似乎根本无法处理身份验证。
我也考虑过以某种方式使用 fetch(可能将私有代码与 webpack 单独捆绑),但是一旦我获取它,我就不知道如何处理它。
我是否以错误的方式解决问题? 我看到的唯一选择是提供两个 HTML 文件,一个加载仅包含公共内容的 webpack 包,另一个下载私有代码。然而,这似乎真的不是最理想的。 正确的做法是什么?
【问题讨论】:
-
我相信你可以使用
require-ensure,你只需要包含你自己的认证逻辑。用户身份验证会更改您使用require.ensure()调用的内容以及您将传递给cb回调的组件。 -
您找到解决方案了吗?我面临着类似的问题。所有资产都受到保护,并且在请求标头中需要一个令牌。不知道如何劫持 require.insure 在后台执行的任何操作,以便在下载下一个块时发送令牌。
-
也许您可以使用 dynamic expressions in a dynamic import 包含一个 API 令牌,然后可以由 http 服务器解析该令牌以从 url 中提取令牌,并且仅在您通过身份验证时才提供文件。类似
import(`./secure/${token}-file.js`)。