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