我正在开发一个基于身份验证的应用程序,用户必须登录才能访问该网站的某些路径。我还没有找到关于如何实现这一目标的文档,因此我就如何解决它进行了研究。
这是我的功能,可以知道用户是否已登录:
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>
有关如何改进此功能以使其正常工作的任何想法吗?
提前致谢!
答案 0 :(得分:0)
这可能不是直接回答问题的答案,但有一个主干插件可以帮助您尝试做的事情:https://github.com/boazsender/backbone.routefilter
您可以指定其他方法,这些方法将在处理路径代码之前/之后触发。如果您在回调之前从返回false,则不会评估路由器代码:https://github.com/boazsender/backbone.routefilter#returning-false-from-within-a-before-filter
因此,你可以在过滤之前创建,它可以检查路由是否应该是安全的。如果它是安全的并且用户未经过身份验证,则只返回false并且不使用路由器代码。