私の Backbone.js ベースのアプリでは、基になるリクエストが無効な認証トークンなしで、または無効な認証トークンで行われた場合に、401 で応答する API と通信しています。401 を受信するたびに #login ページに移動するように設定したいと思います。
401 を取得するために、Backbone.sync を正常にラップしましたが、その時点で行き詰まりました。ここでいくつかの戦略を試しました:
throw 'unauthorized'
Backbone::sync でダウンして、ルーターで取得しようとします。失敗しました:「未承認の未承認」Backbone::sync でダウンしようとする
#.navigate '#login'
と、奇妙に見えるだけでなく、アプリが AMD/require.js に基づいており、ラップされた関数で Backbone.Router インスタンスに簡単にアクセスできないという問題が発生しsync
ます。
define
これまでに見た唯一の解決策は、ルーターインスタンスへの参照を取得し、必要に応じて依存関係として配置される「グローバルに利用可能な」キャッシュオブジェクトを作成することです。そのキャッシュ オブジェクトはシングルトンでなければならず、私の「please-no-globals-and-no-namespaces」戦略全体を破りました。
私はここで立ち往生しています。その一般的な問題に対するよりクリーンな解決策を教えてくれる人はいますか?