Javascript 当通过webpack动态加载模块时,我可以进行某种身份验证吗?

Javascript 当通过webpack动态加载模块时,我可以进行某种身份验证吗?,javascript,authentication,webpack,dependencies,code-splitting,Javascript,Authentication,Webpack,Dependencies,Code Splitting,单页应用程序安全的主流模式似乎是: 用户对自己进行身份验证 用户获得一个令牌 用户使用令牌发出api请求 这对于限制对数据的访问是很好的,但在很多情况下,可能与另一个用户有关的UI代码似乎存在,并且可以通过redux之类的更改某些值来访问。该UI通过特定的菜单选项、请求结构(与按钮和表单等相关的ajax函数)、指令等传递信息。通常,如果可以,最好隐藏这些信息 一种解决方案是将应用程序拆分为特定于用户的捆绑包,并将每个捆绑包放在经过身份验证的端点后面。这个解决方案的唯一问题是,您最终需要在登录时重

单页应用程序安全的主流模式似乎是:

  • 用户对自己进行身份验证
  • 用户获得一个令牌
  • 用户使用令牌发出api请求
  • 这对于限制对数据的访问是很好的,但在很多情况下,可能与另一个用户有关的UI代码似乎存在,并且可以通过redux之类的更改某些值来访问。该UI通过特定的菜单选项、请求结构(与按钮和表单等相关的ajax函数)、指令等传递信息。通常,如果可以,最好隐藏这些信息

    一种解决方案是将应用程序拆分为特定于用户的捆绑包,并将每个捆绑包放在经过身份验证的端点后面。这个解决方案的唯一问题是,您最终需要在登录时重新加载一堆共享模块

    我更喜欢通过这样做(使用webpack)动态加载模块:


    我没有太多地动态加载块,所以我不确定要加载的是哪个端点
    /file1
    ,或者这是否是您自己设置的,但理论上我看不出您为什么不能传递令牌并对请求
    /file1
    的用户进行身份验证。有人知道你会怎么做吗?这是一个值得追求的想法,还是我不想这样做的原因?

    关于“特定于用户的捆绑包”的想法听起来非常低效,或者至少不必要地难以编写代码。如果您希望在JS中加载特定于用户的敏感数据,为什么不使用经过身份验证的AJAX调用呢?或者只使用服务器端模板引擎(用于特定于用户的标记)?或者两者都有(即涡轮链路)?如果我误解了你的问题,请澄清。我部分担心的是某些用户的前端代码有点敏感。你的建议似乎是大多数人都会做的,但它似乎有一些缺点。使用webpack创建单独的捆绑包很简单,因为不同的用户有不同的入口点,可以使用这些入口点创建单独的捆绑包。至于在服务器端呈现内容,我目前的设置无法真正做到这一点,因为我不是每页呈现数据。只要您使用https(SSL),所有内容都是加密的。你能给我一个你担心的安全漏洞的例子吗?在我完成之前,我无意中提交了我的最后一条评论,所以现在可能会更清楚一些。我关心的是允许公开某些捆绑包。网页包中的大多数代码拆分似乎依赖于公共文件夹中的所有块。我可以使用这种设置来保护数据,但我也希望保护对块的访问。您是对的,特定于用户的捆绑包效率低下。一个包含在整个应用程序中共享的供应商依赖关系的供应商捆绑包可以改善情况,但不同用户捆绑包之间仍然存在无法通过该设置轻松共享的共享代码(至少我不认为可以)。这就是为什么我更喜欢代码拆分的部分原因。唯一的问题是,我不喜欢将区块公开的想法,这似乎是必要的。
    require.ensure(["./file1"], function() {
      // do things
    });