問題タブ [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.

0 投票する
1 に答える
8451 参照

javascript - $http インターセプターをスタンドアロン モジュールとして作成するときの Angular の依存関係エラー

これは、各リクエストに認証トークンを添付するインターセプターをどのようにセットアップしたかの実例です (これは多かれ少なかれhttps://docs.angularjs.org/api/ng/service/ $http の例です) 。

configandブロックには、さまざまな角度モジュールからサービスを呼び出して開始する他のものがたくさんあるrunので、少し整理したいと思います。ただし、ブロックでの依存性注入には非常に具体的なルールがいくつかあることを理解していconfigますが、これはよくわかりません。これらはauthInterceptor、別のモジュールでファクトリを定義することを妨げています。configandブロック内の他のロジックがrunアプリ内の他のモジュールを呼び出すため、そのインターセプターを宣言するのは場違いに見えます。

これは私がやりたいことです:

代わりにブロックに注入しようとしましたが、そこrunに注入することは許可されていないと思います$httpProvider:

モジュールをどこに注入して、それ$httpProviderも注入可能にする必要がありますか? また、インターセプターを既存のものにどこに追加する必要がありますか? 私の主な目標は、インターセプターやその他の同様のサービスを、独自の自己完結型モジュールに保持することです。

編集

provider代わりにa を宣言すると、近づいているように見える別のエラーが発生しますfactory(何らかの理由で、これらは交換可能であると常に考えていました):

authInterceptorそのため、ブロックに正常に注入されるようになりましconfigたが、検索しようとすると失敗します$q

0 投票する
1 に答える
5519 参照

angularjs - AngularJS コントローラでイベントをキャッチできません

ユーザー認証システムを実装しようとしています。401http status code とHTTP Auth Interceptor Moduleについて読みました。

モジュールを bower でダウンロードし、アプリ モジュールにロードしました。まだ使用していませんが、このモジュールがトリガーするのと同じイベントを使用して、ユーザーがブラウザーでアプリケーションを開いたときにユーザー ログイン ポップアップを表示したいと考えています。

私のコントローラーはすべての子ですCoreController。現在のCoreControllerユーザーを解決します。アプリケーションのロード時にログインしているユーザーがいないため、イベントを発行するログインフォームを表示したい: event:auth-loginRequired(http-auth-interceptor と同じ)。

これCoreControllerには、この特定のイベント ( ) をリッスンする別のルールがありevent:auth-loginRequiredます。このイベントが検出されると、コントローラーはそのstateID を呼び出すポップアップを表示します。

私が抱えている問題は、イベントを正しく発行したとコンソールが言っているが、リスナーがトリガーされていないため、ログインポップアップが表示されないことです。

これが私のものCoreControllerです:

私は何を間違っていますか?

乾杯、マキシム

0 投票する
1 に答える
687 参照

angularjs - ディレクティブで http-auth-interceptor を使用する方法

http-auth-interceptorユーザー認証を求めるために使用しています。ui-routerまた、アプリケーションのルートを処理するために使用しています。今までは、「コア」CoreControllerという状態に関連付けられた最上位のコントローラーがありました。ui-router

アプリケーションからのすべてのルートは、このコア状態 (抽象的) の子状態です。たとえば、私はcore.user, core.user.show, core.settings, ...を持っています

resolveルートの 1 つにパラメーターを追加するまで、すべてがうまく機能していました。core.userにはresolveAPI からデータを要求するパラメーターがあり、ユーザーが正しく認証されていない場合、この API は 401 を返します。

問題は、のリスナーがevent:auth-loginRequiredCoreController (最上位コントローラー) にあることです。これは、子の状態で解決が満たされていないため、ロードされていないため、イベントがトリガーされません。

この CoreController にイベント リスナーを含めることはできないと判断し、このイベントをキャッチするためのディレクティブの実装を開始しました。現時点で私が持っているものは次のとおりです。

ログインモーダルをトリガーするために、この状態を使用していました。

そして、ここに私が構築しようとしているディレクティブがあります:

しかし、状態プロバイダーで以前に発生したエラーが発生します。

ディレクティブ 'loginDialog' のテンプレートには、ルート要素が 1 つだけ必要です。モジュール/ユーザー/ビュー/login.html

これを処理する方法がわからない、乾杯、

マキシム

0 投票する
1 に答える
1501 参照

javascript - AngularJS で制限されたページを管理するためのインターセプター

数日前に AngularJS を使い始めたばかりで、サーバーの応答から 401 ステータスをインターセプトするインターセプターに問題があります。

401 が返され、そのイベントでリダイレクトがトリガーされると、「loginRequired」タイプのメッセージをブロードキャストします。

問題は、ログインしていないときに制限されたページにアクセスしようとすると、ログイン ページにリダイレクトされる前にページが一瞬点滅することです。私はまだ非同期のもの、約束などのかなりの初心者です。誰かが私が間違っていることを指摘できますか?

これが私のインターセプターです。ご覧のとおり、非常に単純ですが、要点を説明するために簡略化し、さらに発展させる前に物事を理解しようとしています。

インターセプター

私のインターセプターの注入

制限ページへのルート

制限付きページ コントローラー

$rootScope イベント ウォッチャー

私の問題は明らかに、インターセプターと $q の処理方法にあります。githubでインターセプターを作成する別の方法を見つけましたが、それは公式ドキュメントが使用する方法ではないため、古い方法である可能性があり、工場に入れるほどクリーンではないと思います。彼は、モジュールの config 関数でルートを定義した後、このコードを配置するだけです。しかし、このコードは機能し、ページがフラッシュされません。

Github で見つけた別の方法

しかし、私の目標は「機能させる」ことだけではなく、「壊れていない場合は直さないでください」というマントラが嫌いです。自分のコードの問題を理解したい。ありがとう!

0 投票する
0 に答える
87 参照

javascript - インターセプターで読み取る $resource カスタム構成パラメーターを作成する方法

$resource特定の呼び出しに対してのみアクションを実行するインターセプターを作成したいと考えています。$resourceインターセプターが参照する大きなホワイトリストまたはブラックリストを作成して維持するのではなく、インターセプトするかどうかを呼び出し自体で指定する必要があります。

たとえば、$httpyou を使用すると、次のことができます。

次に、インターセプターで:

ただし、$resourceこのような構成オブジェクトを指定する引数はありません。$resourceの代わりにこれをどのように達成でき$httpますか?