如何为不同的用户组运行两个版本的 Backbone.js 应用程序

How to run two versions of Backbone.js app for different user groups?

本文关键字:两个 版本 应用程序 js Backbone 运行 用户组      更新时间:2023-09-26

>我有一个小型的骨干应用程序,它当前正在Drupal站点内的页面上运行。目前,Backbone 应用程序在没有身份验证的页面上提供 - 任何用户都可以看到它。

我想在另一个页面上使用几乎相同的 Backbone 应用程序,用户只有在经过身份验证时才会看到该应用程序。但是,我想为这些经过身份验证的用户添加一些高级功能。

困难在于我想为两种类型的用户使用相同的骨干代码,而不是拥有两个单独的骨干应用程序。你会建议我怎么做?

我天真地想到了这种事情:

SearchView = Backbone.View.extend({
   render: function() { 
      if (isAdvanced) { 
        //render advanced search options in template
      }
   },
   runSearch: function() { 
      if (isAdvanced) {
       // handle advanced options for client-side search
   }
});

问题是JavaScript代码显然对未经身份验证的用户可见,我猜他们可以在控制台中设置isAdvanced,并以这种方式解锁高级功能?

(身份验证过程本身由Drupal处理。如果用户未通过身份验证以查看页面 B,则会自动将其转发到登录页面。这不是问题所在 - 如何组织JavaScript代码是问题所在。

我是否需要维护两个单独的主干应用版本?或者有没有办法在两者之间共享代码?

就上下文而言,这不是一个超级安全的应用程序,但高级功能是付费的,所以我宁愿它不是微不足道的黑客。

在这种情况下,我会做的最小化开发只是丑化/最小化你的应用程序JavaScript,这将是最便宜的解决方案,只有非常有动力的人才会花时间浏览混淆的代码。

我建议在 Backbone 应用程序中定义通用功能,对于高级功能,扩展通用应用程序并在其上添加更多功能。 根据身份验证级别呈现时,呈现通用/高级应用。有了这个,您添加到通用应用程序的任何内容都将可供两个用户使用,并且添加到高级应用程序的任何内容将仅适用于高级用户。