問題タブ [angular-http-auth]
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 - Angularjs - $routeChangeError の後に最後の履歴エントリを削除する
サーバー側のリソースが必要route
です。resolve
そのリソースは認証を要求します。そのため、キャンセル可能なログインフォームポップアップを表示します。キャンセルすると、ルート/解決が正しく取得rejected
および起動されます。$routeChangeError
問題は、アドレスバーに失敗した場所/URL と不要な履歴エントリがあることです。
リロードせずに現在の場所の URL を最後のものに置き換えるにはどうすればよいですか? また、ルート変更が失敗した後、現在の履歴エントリを削除するにはどうすればよいでしょうか?
編集: angular-http-auth を使用します。これが私のルーティングです:
/home
> /item
(認証が必要なリソースを解決する必要があります。ログイン フォームにログインしていない場合、キャンセル可能なポップアップが開きます)
認証をキャンセルすると、$routeChangeError が発生し、レンダリングされない/home
ためにまだページにいます。/item
アドレス バーに間違った URL が表示されるようになりました。/item
angularjs - angular-http-auth と $http transformResponse
サーバーから 401 "unauthorized" 応答が返されるたびに、angular-http-authを使用してログイン ダイアログを表示しています。
私は冷静なので、サービス内の応答オブジェクトを逆シリアル化することも試みています。たとえば、サービスが をリクエストしcar
、応答がである場合、を使用してそれをオブジェクト{make: Honda, model: Civic}
に逆シリアル化しようとします。Car
transformResponse
例えば:
これはangular-http-authでは機能しません。応答が 401 Unauthorized の場合は、javascript エラーが発生します。transformResponse
これは、応答が 401 だった場合でも、angular がそのコードを実行しようとするためです。
$http
インターセプター ( angular-http-authが使用するもの) はtransformResponse
コードの後に実行されることが判明しました。transformResponse
サーバーの応答が 401 だった場合、そのコードは機能しないため、これは大きな問題ですdata
( .
これは他の誰かにとって問題ですか?どうやってそれを回避しましたか?インターセプターを使用するtransformResponse
場合は使用しないでください。$http
angularjs - angular-http-auth が機能しない Relangular
私は基本的な http リクエストでAngular-HTTP-Authを使用していましたが、その後 Restangular に移行し、401 が HTTP-Auth でキャッチされなくなっていることがわかりました。これは、Angular http メソッドが使用されていないか、何らかの方法で傍受されているためだと思います。これらを再び連携させる方法はありますか?Restangular にはインターセプターが公開されていることは知っていますが、2 つがどのように動作する必要があるかはわかりません。
angularjs - angularjs 基本認証ヘッダー
API に接続して認証ヘッダーを送信しようとしています。こちらで説明されているように Base64 を使用しています
しかし、私はこのエラーが発生しています
XMLHttpRequest はhttps://.../Category.json?callback= ? を読み込めません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン ' http://....com ' へのアクセスは許可されていません。応答の HTTP ステータス コードは 400 でした。
angularjs - auth-http-interceptor を使用して login-confirmed をブロードキャストする
ログイン確認済みをブロードキャストするために auth-http-interceptor を使用しています。ユーザーがログインしているかどうかを確認する main.html があります。
とディレクティブ
そしてログインコントローラー
1) しかし、console.logs を取得できません。私のコードに何か問題がありますか?
2) 私は正しいです。
angularjs - 認証が失敗すると、Angular $http Interceptor が複数のモーダルを開く
$http interceptor
失敗したときにログインモーダルを表示するために使用してい$auth
ます。ここに私が持っている簡単なセットアップがあります:
上記のコードは正常に動作します。しかし、私が抱えている問題は、API が複数の認証失敗エラーをスローすると、インターセプターが複数のモーダルを同時に開くことです。通常、1 ページでバックエンド API に接続するさまざまなサービスが 2 ~ 3 回あり、認証が失敗すると、それらのすべての API が無効なトークンの間に認証失敗エラーを返します。このインターセプターは、3 つの take_invalid エラーとしてそれを検出し、3 つのログイン モーダルを 1 つずつ重ねて表示します。これを防ぐにはどうすればよいですか?
認証失敗が何回発生しても、インターセプターが 1 つのログインモーダルのみを表示するようにするにはどうすればよいですか?
私のサービスは次のようになります。
サービスでは$rootScope.loginProgress
、ログインモーダルが開いているかどうかを判断するためのスイッチとして使用しようとしています。$rootScope.loginProgress
ただし、モーダルが既に開かれている場合(true の場合)に空の promise を返す方法がわかりません。
angularjs - Angular でリクエスト ヘッダーを設定およびオーバーライドする正しい方法
使用している認証方法のために、すべてのリクエストにグローバル http ヘッダーを設定する必要があります。SSO アプローチを使用してユーザーを認証するための Identity Server があります。これまでのところ、インターセプターを使用してヘッダーをグローバルに設定していました。ただし、認証方法を使用しないサードパーティ API にリクエストを送信する必要がある場合があります。インターセプターによって構成された認証ヘッダーをオーバーライドするにはどうすればよいですか? この問題に対する推奨されるアプローチはありますか?