单页应用程序安全性的普遍模式似乎是:
- 用户验证自己
- 用户获得令牌
- 用户使用令牌发出 api 请求
这对于限制对数据的访问来说很好,但在很多情况下,可能与另一个用户有关的 UI 代码似乎存在,并且可以通过类似 redux 更改某些值来访问。该 UI 通过某些菜单选项、请求结构(与按钮和表单等相关的 ajax 功能)、说明等提供信息。一般来说,如果可以的话,隐藏这些信息似乎是个好主意。
一种解决方案是将应用程序拆分为特定于用户的捆绑包,并将每个捆绑包放在经过身份验证的端点后面。我对这个解决方案的唯一问题是您最终需要在登录时重新加载一堆共享模块。
我更喜欢通过执行以下操作(使用 webpack)来动态加载模块:
require.ensure(["./file1"], function() {
// do things
});
我还没有过多地投入到动态加载块中,所以我不确定要加载哪个端点./file1
或者这是否是您自己设置的,但理论上我看不出有任何理由为什么您不能传递令牌并对请求的用户进行身份验证./file1
。有谁知道你会怎么做?这是一个值得追求的想法,还是有什么理由让我不想做这样的事情?