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

时间:2013-10-25 15:05:29

标签: javascript backbone.js

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

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

困难在于我想为两种类型的用户使用相同的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代码是问题所在。 )

我是否需要维护两个不同版本的Backbone应用程序?或者有没有办法在两者之间共享代码?

对于上下文,这不是一个超级安全的应用程序,但高级功能是付费的,所以我更喜欢它不是琐碎 hackable。

2 个答案:

答案 0 :(得分:0)

在这种情况下,为了最大限度地减少开发,我会做的只是简化/最小化您的应用程序JavaScript,这是最便宜的解决方案,只有一个非常积极的人会花时间去处理混淆的代码。

答案 1 :(得分:0)

我建议,在Backbone应用程序中定义常用功能,并且对于高级功能,可以扩展常见应用程序并在其上添加更多功能。而渲染取决于身份验证级别呈现常见/高级应用程序。通过这种方式,您可以为两个用户添加常见应用程序,并且高级应用程序中添加的任何内容都只适用于高级用户。