0

我有一个小型 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 应用程序的两个不同版本吗?或者有没有办法可以在两者之间共享代码?

就上下文而言,这不是一个超级安全的应用程序,但高级功能是付费的,所以我希望它不是容易被破解的。

4

2 回答 2

0

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

于 2013-10-26T00:59:51.063 回答
0

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

于 2013-10-26T00:03:25.657 回答