繁体   English   中英

如何阻止用户直接在Backbone和Nodejs中的单页应用程序中访问其他路由?

[英]How can I stop a user from accessing another route in a single page app directly in Backbone and Nodejs?

我正在构建一个需要登录的应用程序,如果登录成功,它将登录到另一个名为“事件”的页面。 但是,Backbone使用URL栏中的哈希,因此,永远不会将有人访问该页面的请求发送到NodeJs Server。

事实是,没有登录的人只需输入http://www.mywebsite.com/#events就可以访问该页面

如何预防?

覆盖骨干路由器中的“执行”功能。

从文档:

router.execute(回调,args)

每当路由匹配并且其对应的回调将要执行时,在路由器内部都会调用此方法。 覆盖它以执行路由的自定义解析或包装,例如,在将查询字符串传递到路由回调之前解析查询字符串,如下所示:

因此,例如:( http://plnkr.co/edit/BqD4YfjQYz2RITWNhBKZ?p=preview

  var Router = Backbone.Router.extend({
    execute: function(callback, args) {
        if(!someLoginFunctionCheck()) {
          this.navigate('#')
        } else {
          if (callback) callback.apply(this, args);
        }
      }
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM