我正在构建一个需要登录的应用程序,如果成功,会将您转到另一个名为events的页面。但是,Backbone使用URL栏中的哈希值,因此,有人访问该页面的请求永远不会发送到NodeJs服务器。
问题是,没有登录的人只需输入http://www.mywebsite.com/#events
即可访问该页面如何防止这种情况?
答案 0 :(得分:0)
覆盖'执行'功能在骨干路由器中。
来自文档:
router.execute(callback,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);
}
}
});