Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为不同的用户组运行两个版本的Backbone.js应用程序?_Javascript_Backbone.js - Fatal编程技术网

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

Javascript 如何为不同的用户组运行两个版本的Backbone.js应用程序?,javascript,backbone.js,Javascript,Backbone.js,我有一个小型主干应用程序,目前正在Drupal站点的一个页面上运行。目前,主干应用程序在没有身份验证的页面上提供,任何用户都可以看到它 我想在另一个页面上使用几乎相同的主干应用程序,用户只有在经过身份验证后才能看到该应用程序。不过,我想为这些经过身份验证的用户添加一些高级功能 困难在于我想为这两种类型的用户使用相同的主干代码,而不是使用两个独立的主干应用程序。你建议我怎么做 我天真地想到了这类事情: SearchView = Backbone.View.extend({ render: f

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

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

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

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

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。这是最便宜的解决方案,只有非常有动力的人才会花时间浏览模糊的代码。

我建议,在主干应用程序中定义一些常见功能,对于高级功能,扩展通用应用程序并在其上添加更多功能。根据身份验证级别进行渲染时,渲染通用/高级应用程序。这样,您添加到通用应用程序的任何内容都将对两个用户可用,而添加到高级应用程序的任何内容都将仅对高级用户可用。

只是澄清一下-一旦加载应用程序,就没有额外的Ajax请求,因此加载应用程序后无需处理额外的身份验证,当页面第一次呈现时发送回客户端的内容。要阻止这种黑客行为,只需为非高级用户禁用该功能。如果用户设置是高级的,他将从服务器收到错误。但我如何禁用该功能?(搜索都是客户端的。)所以你不能阻止用户这么做(为什么搜索都是客户端的?)。即使通过在两个不同的文件中拆分视图,用户也可以通过其中一个浏览器扩展名(如果他可以得到文件的话)来更改视图。我建议使用不同的文件。并非所有用户都有时间在页面(客户端)中获取另一个js文件(来自另一个pro用户)和inejct,只是为了一个功能(但每个用户都可以轻松地编辑isAdvanced)。客户端中的一切都在用户手中,用户可以用它做任何事情。谢谢!搜索是客户端的,因为它只搜索很少的项目——它是一个完全客户端的应用程序。