問題タブ [angular-http-interceptors]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - $http インターセプターをスタンドアロン モジュールとして作成するときの Angular の依存関係エラー
これは、各リクエストに認証トークンを添付するインターセプターをどのようにセットアップしたかの実例です (これは多かれ少なかれhttps://docs.angularjs.org/api/ng/service/ $http の例です) 。
config
andブロックには、さまざまな角度モジュールからサービスを呼び出して開始する他のものがたくさんあるrun
ので、少し整理したいと思います。ただし、ブロックでの依存性注入には非常に具体的なルールがいくつかあることを理解していconfig
ますが、これはよくわかりません。これらはauthInterceptor
、別のモジュールでファクトリを定義することを妨げています。config
andブロック内の他のロジックがrun
アプリ内の他のモジュールを呼び出すため、そのインターセプターを宣言するのは場違いに見えます。
これは私がやりたいことです:
代わりにブロックに注入しようとしましたが、そこrun
に注入することは許可されていないと思います$httpProvider
:
モジュールをどこに注入して、それ$httpProvider
も注入可能にする必要がありますか? また、インターセプターを既存のものにどこに追加する必要がありますか? 私の主な目標は、インターセプターやその他の同様のサービスを、独自の自己完結型モジュールに保持することです。
編集
provider
代わりにa を宣言すると、近づいているように見える別のエラーが発生しますfactory
(何らかの理由で、これらは交換可能であると常に考えていました):
authInterceptor
そのため、ブロックに正常に注入されるようになりましconfig
たが、検索しようとすると失敗します$q
。
angularjs - AngularJS コントローラでイベントをキャッチできません
ユーザー認証システムを実装しようとしています。401
http status code とHTTP Auth Interceptor Moduleについて読みました。
モジュールを bower でダウンロードし、アプリ モジュールにロードしました。まだ使用していませんが、このモジュールがトリガーするのと同じイベントを使用して、ユーザーがブラウザーでアプリケーションを開いたときにユーザー ログイン ポップアップを表示したいと考えています。
私のコントローラーはすべての子ですCoreController
。現在のCoreController
ユーザーを解決します。アプリケーションのロード時にログインしているユーザーがいないため、イベントを発行するログインフォームを表示したい: event:auth-loginRequired
(http-auth-interceptor と同じ)。
これCoreController
には、この特定のイベント ( ) をリッスンする別のルールがありevent:auth-loginRequired
ます。このイベントが検出されると、コントローラーはそのstate
ID を呼び出すポップアップを表示します。
私が抱えている問題は、イベントを正しく発行したとコンソールが言っているが、リスナーがトリガーされていないため、ログインポップアップが表示されないことです。
これが私のものCoreController
です:
私は何を間違っていますか?
乾杯、マキシム
angularjs - ディレクティブで http-auth-interceptor を使用する方法
http-auth-interceptor
ユーザー認証を求めるために使用しています。ui-router
また、アプリケーションのルートを処理するために使用しています。今までは、「コア」CoreController
という状態に関連付けられた最上位のコントローラーがありました。ui-router
アプリケーションからのすべてのルートは、このコア状態 (抽象的) の子状態です。たとえば、私はcore.user
, core.user.show
, core.settings
, ...を持っています
resolve
ルートの 1 つにパラメーターを追加するまで、すべてがうまく機能していました。core.user
にはresolve
API からデータを要求するパラメーターがあり、ユーザーが正しく認証されていない場合、この API は 401 を返します。
問題は、のリスナーがevent:auth-loginRequired
CoreController (最上位コントローラー) にあることです。これは、子の状態で解決が満たされていないため、ロードされていないため、イベントがトリガーされません。
この CoreController にイベント リスナーを含めることはできないと判断し、このイベントをキャッチするためのディレクティブの実装を開始しました。現時点で私が持っているものは次のとおりです。
ログインモーダルをトリガーするために、この状態を使用していました。
そして、ここに私が構築しようとしているディレクティブがあります:
しかし、状態プロバイダーで以前に発生したエラーが発生します。
ディレクティブ 'loginDialog' のテンプレートには、ルート要素が 1 つだけ必要です。モジュール/ユーザー/ビュー/login.html
これを処理する方法がわからない、乾杯、
マキシム
javascript - AngularJS で制限されたページを管理するためのインターセプター
数日前に AngularJS を使い始めたばかりで、サーバーの応答から 401 ステータスをインターセプトするインターセプターに問題があります。
401 が返され、そのイベントでリダイレクトがトリガーされると、「loginRequired」タイプのメッセージをブロードキャストします。
問題は、ログインしていないときに制限されたページにアクセスしようとすると、ログイン ページにリダイレクトされる前にページが一瞬点滅することです。私はまだ非同期のもの、約束などのかなりの初心者です。誰かが私が間違っていることを指摘できますか?
これが私のインターセプターです。ご覧のとおり、非常に単純ですが、要点を説明するために簡略化し、さらに発展させる前に物事を理解しようとしています。
インターセプター
私のインターセプターの注入
制限ページへのルート
制限付きページ コントローラー
$rootScope イベント ウォッチャー
私の問題は明らかに、インターセプターと $q の処理方法にあります。githubでインターセプターを作成する別の方法を見つけましたが、それは公式ドキュメントが使用する方法ではないため、古い方法である可能性があり、工場に入れるほどクリーンではないと思います。彼は、モジュールの config 関数でルートを定義した後、このコードを配置するだけです。しかし、このコードは機能し、ページがフラッシュされません。
Github で見つけた別の方法
しかし、私の目標は「機能させる」ことだけではなく、「壊れていない場合は直さないでください」というマントラが嫌いです。自分のコードの問題を理解したい。ありがとう!
javascript - インターセプターで読み取る $resource カスタム構成パラメーターを作成する方法
$resource
特定の呼び出しに対してのみアクションを実行するインターセプターを作成したいと考えています。$resource
インターセプターが参照する大きなホワイトリストまたはブラックリストを作成して維持するのではなく、インターセプトするかどうかを呼び出し自体で指定する必要があります。
たとえば、$http
you を使用すると、次のことができます。
次に、インターセプターで:
ただし、$resource
このような構成オブジェクトを指定する引数はありません。$resource
の代わりにこれをどのように達成でき$http
ますか?