触发阻止执行默认代码的事件

时间:2013-07-30 08:32:23

标签: backbone.js

我正在开发一个基于身份验证的应用程序,用户必须登录才能访问该网站的某些路径。我还没有找到关于如何实现这一目标的文档,因此我就如何解决它进行了研究。

这是我的功能,可以知道用户是否已登录:

App.filterAuth = function(navigateTo) {
    navigateTo = typeof navigateTo !== 'undefined' ? navigateTo : '#';

    if (App.logged == false) {
        App.vent.trigger('navigate', navigateTo);
    }
};

我的想法是,当用户登录时设置App.logged = true。然后,当我的路由器尝试执行具体路由器时,我可以调用App.filterAuth()。这实际上有效并且做了一些调试我发现一切都被触发了纠正。

问题?例如,我在受保护的路由上执行此操作,该路由为用户加载图像供稿。执行App.filterAuth()后,我发现它尝试导航到#,但此供稿视图的执行未停止,并且未触发与#路线关联的视图。< / p>

有关如何改进此功能以使其正常工作的任何想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

这可能不是直接回答问题的答案,但有一个主干插件可以帮助您尝试做的事情:https://github.com/boazsender/backbone.routefilter

您可以指定其他方法,这些方法将在处理路径代码之前/之后触发。如果您在回调之前从返回false,则不会评估路由器代码:https://github.com/boazsender/backbone.routefilter#returning-false-from-within-a-before-filter

因此,你可以在过滤之前创建,它可以检查路由是否应该是安全的。如果它是安全的并且用户未经过身份验证,则只返回false并且不使用路由器代码。