問題タブ [angular2-guards]

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 投票する
2 に答える
845 参照

angular - ガードへのエラー注入サービスの取得

私は次のようにガードを作成しています:

サービスはこちら:

ページをロードすると、次のエラーが表示されます。

サービスを宣言するMyGuardのコンストラクターの行を削除すると

エラーなしでページを読み込むことができます。私は何を間違っていますか?

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

angular - ブートストラップ後のルーティング前に Angular2 Service ブール値を更新する

ASP.NET Core MVC で Angular2 を使用しており、手動の URL ナビゲーションの管理は正常に機能し、サーバーは Angular2 でホーム ビューを正常に読み込んでいます。

ユーザー認証では、次のようなセッション変数を設定しています:

私が望むのは、ユーザーがアプリケーションに入った後、手動でナビゲートして特定のルートをロードしたい場合、サービスが ASP コントローラーを呼び出して、ユーザーが既に認証されているかどうかを確認して、ガードが許可するようにすることです。ルーティング。代わりに、ガードはデフォルトで false に設定されており、明らかにログイン ページにリダイレクトされます。

auth.service の IsLoggedIn 値を更新するために呼び出したい ASP コントローラー メソッドを次に示します。

私のAuthenticationGuardがAuthenticationServiceを呼び出して、認証された状態を管理するブール値を更新できるように:編集:より明確な説明のためにauth.guard.tsコード全体を貼り付けます

次のコードで、私の auth.service のブール値を更新します。


問題は、保護されたルートを手動でロードしようとすると発生します。サービスのブール値が更新される前に、ログイン ページにリダイレクトされます。この問題を管理するためにどのようなソリューションをセットアップできるかわかりません...

電話してみた

  • 私のガードコンストラクターで
  • 私のサービスコンストラクターで

しかし、それはまだ適切なタイミングで行われていません。私の最善の推測は、最初の AppModule をロードするときにこれを管理することですが、これが適切なタイミングであったとしても、Angular2 がブートストラップを終了するまでにブール値が更新されるという保証はありません。ブラウザをブロックするため、本当に悪い解決策です...どんなアイデアでも本当に役に立ちます。

PS : 今日も同様の投稿をしましたが、別の問題のためだったので、混乱を避けるためにここにリンクします:手動 URL ナビゲーションでのユーザー認証状態の管理

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

angular - Angular2 CanDeactivate with async observable

Guards を調べて、CanDeactivate でナビゲーションが起こらないようにしようとしています。保存/キャンセル、保存=ナビゲート、キャンセル=キャンセルのシンプルなモーダルを表示したい。

CanDeactivate は機能していますが、適切なタイミングで解決されていないようです

Guard.ts

Component.ts

最初の「保存」では、モーダルが表示されると何も起こりません。2 回目の「保存」では、モーダルに応答する前にナビゲーションが行われます。適切なタイミングで解決するにはどうすればよいですか?

0 投票する
3 に答える
31489 参照

angular - 角度2ガードで現在のルートを取得

私のプロジェクトには、ユーザーがルートにアクセスできるかどうかを判断するための AccessGuard クラスがあります。を使用しrouter.urlて現在のルートを取得しましたが、ユーザールートにいるように新しいルートに移動する前にURLがルートを返し、候補ルートをクリックすると、アクセスを検証するために必要な候補ではなくユーザーが返されますこれは私のルートファイルです:

これは私のアクセスガードです:

0 投票する
3 に答える
15713 参照

angular - Angular 2 の役割と権限

プロジェクトで angular2 と laravel 5.3 を使用しました。ユーザーがサーバーにログインすると、laravelで、ユーザーの権限がAngularで承認を処理するために送信されます。そこで、アクセスできないユーザーからルートを保護するためのガードを作成しました。ここに私のガードクラスコードがあります:

ルートが保護されたので、コンポーネント クラス内のユーザー権限にどのようにアクセスできるのか疑問に思っています。ユーザーがルートにアクセスできる場合がありますが、dom の特定の部分が表示されないことがあります。どうすればこのような状況に対処できますか?

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

angular - ルートに基づいて特定のページのナビゲーションを非表示にするAngular 2

ユーザーが特定のページを表示しているときに、ナビゲーションを自動的に非表示にしようとしています。たとえば、ユーザーがログイン ページを表示している場合、メニューは表示されません。

これまでに試したことは、現在のページの URL パスに基づいて「ナビゲーションを表示」フラグを変更する Navigator サービスがあることです。これは、これまでのところ、次の URL を Navigator サービスに渡し、「ナビゲーションを表示」フラグを更新することを仕事としている App Guard によってアクセスされます。

テストとしては、クリックイベントを介してビューを更新して、サービスが正しいデータを受信し、それに応じて更新されていることを確認しています。

私が持っている唯一の問題は、「常に」「ナビゲーションを表示」フラグの変更を購読/聞く方法が思いつかないことです。つまり、ナビゲーションを自動的に隠して表示したいということです。

ナビゲーターサービス

アプリガード

アプリ コンポーネント

アプリ コンポーネント テンプレート

上記のテストでわかるように、サービスに登録できるように「ナビゲーションの切り替え」ボタンがあります。正直なところ、これが最良の実装であるかどうかはわかりません。また、正しい方法で行っていない可能性もあります。アプリ コンポーネントが「ナビゲーションを表示」フラグの値を常に認識できるようにする方法があるかどうかを尋ねたいと思います。

更新 - 問題は解決しました

私はこの質問に従って、正しく答えに導きました。次のようにナビゲーション サービスを更新しました。

ナビゲーターサービス

そして、アプリ コンポーネントのngOnInitライフサイクル フックでサービスをサブスクライブします。

これが最善のアプローチであるかどうかはまだ100%わかりませんが、これまでのところ問題は解決しています。

0 投票する
2 に答える
3284 参照

angular - Angular2 の CanActivate でのサービスの注入

ルートの認証ガード サービスを作成しようとしています。このサービスでは、現在ログインしているユーザーを返すために使用している UserAccountService を挿入する必要があります。

これは私のガードです:

UserAccountServiceコンポーネントに注入されて正常に動作し、 my に含まれていapp.moduleます:

CookieService、などの他のサービスは問題Httpなく注入されますが、 にUserAccountServiceはこの問題があります。

以下は、サービスの定義です。