問題タブ [angular-new-router]

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 に答える
428 参照

angularjs - ルートで余分なハッシュを処理する方法は? (AngularJS 1.5 + 新しい/コンポーネント ルーター)

新しいコンポーネント ルーター ビットを備えた Angular 1.5 を使用してアプリを構築しようとしています。少し特殊なケースに遭遇したので、それを回避する方法があるかどうか疑問に思っています。

主なプレーヤー

  • IdentityServer v2 : 現在、クライアントはこれを OAuth に使用しています。この問題の一部を引き起こします。これはレガシーであり、その使用法を制御することはできません。
  • フロントエンド フレームワークとしてAngularJS 1.5 。
  • ngComponentRouter と呼ばれる新しい angular routerは、今では信じられますか? 私たちは、このスタイルが Angular v1.5 と Angular v2 の間の橋渡しに役立つと考えており、移植も簡単でした。
  • OAuth 暗黙的フローのラッパーとしてのoauth-ng ..
  • 古いブラウザー: IE9+ をサポートする必要があるという意味で、Angular の HTML5 モードを使用できないことを意味します。

目標

次のような URL を取得したいと考えていますhttp://mysite/#!/auth/#auth_token=xyz123(構造は制御下にありません。たとえば、2 番目のハッシュを削除できません)。

  • 実際の認証コントローラーに入れる
  • パラメータを介して、または を介し​​て直接、auth_token 値を使用できるようにします$location。(現在、コントローラーに到達する前にスクラブされています)。

背景・問題点

クライアントには、IdentityServer v2 を使用している中央ログイン システムがあります。私が理解している限りでは、IdSrv v2 からトークンをリクエストする#auth_token=xyz123と、リダイレクト URL に追加して応答します。あなたが持っていると思ったときに書き戻されたmy.com/login.htmlため、login.html#auth_token=xyz123.

ただし、すでにハッシュを使用している Angular アプリでは、URL が最終的にmysite.com/#/auth#auth_token=xyz123.

ご想像のとおり、これは Angular を怒らせます。これをコンポーネントルーターの下で機能させる方法をまだ見つけられていません。

古いルーターとの連携方法

oauth -ng docsに従って、html5 を有効にせずに古いルーターを使用していた場合は、次のようにします。

試したこと

  • 同様の方法でコンポーネント ルートを定義します。コンポーネント ルーターで許可されていないように見える が/access_token=:accessToken含まれているため、これは機能しませんでした。=
  • IdentityServer v2 で応答の形式を変更できるかどうかを確認します。それは可能ではないようです。応答は にハードコードされているよう[URL we define]#auth_token=xyz123です。
  • 他のハッシュなどを使用して URL を偽造します。一般的に、悪い/一貫性のない動作が発生します。

私たちの選択肢は何だと思いますか

  • キャッチオール / 見つからないコントローラーを使用します。ルートを まで通過させれば、/**からトークン値を取得できます$location。しかし、それは一種のグロスです。私たちはそれを避けたいです。
  • 完全な URL をコントローラに取得する方法を見つけます。ルートをキャプチャしてコントローラーに渡すことはできますが、その時点では URL を使用できません。
  • 古いルーターまたは ui-router の使用に戻ります (この時点ではやりたくありません)。

私たちを正しい方向に向けることができるものは何でも大歓迎です!

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

angularjs - angular 1で角度コンポーネントを分離できません

コンポーネント ルーティングのチュートリアルとは少し異なる方法でコードを編成しようとしています。簡単に言えば、アプリにこの構造を持たせたいのです。

私はAngular 1.5とこのバージョンのAngular Routerを使用しています:これは動作します

app.js

settings.js

ただし、settings.js ファイルから一般設定コンポーネントを削除しようとすると、エラーが発生しますCannot read property '$routerOnActivate' of undefined

依存関係を定義/注入する方法であるか、generalSettings の個別のモジュール定義が必要であると思われます (独自のモジュール 'generalSettings' を定義して注入するとうまくいくようです。これが最良のオプションであるとは確信していませんとも)。要するに、それを行う最善の方法がわからないということです。ネストされたすべてのコンポーネントを 1 つのファイルに格納しようとはしていません。アドバイスお願いします、よろしくお願いします!