在我的基于 Backbone.js 的应用程序中,我正在与我的 API 交谈,该 API 以 401 响应,以防在没有或使用无效身份验证令牌的情况下发出底层请求。每次收到 401 时,我想通过导航到 #login 页面来检测它。
为了获取 401,我成功地包装了 Backbone.sync,但那时我有点卡住了。我在这里尝试了几种策略:
throw 'unauthorized'
在 Backbone::sync 中向下并尝试在我的路由器中获取。失败:“未获授权”尝试
#.navigate '#login'
在 Backbone::sync 中关闭,这不仅看起来很奇怪,而且伴随着我的应用程序基于 AMD/require.js 的问题,我不能简单地在我的包装sync
函数中访问我的 Backbone.Router 实例。
到目前为止,我看到的唯一解决方案是创建一个“全局可用”的缓存对象,它获取对我的路由器实例的引用,然后将其define
作为依赖项放入需要的地方。那个缓存对象必须是一个单例并且破坏了我的整个“请禁止全局和禁止命名空间”策略。
我有点卡在这里。谁能指出我对这个常见问题的更干净的解决方案?