2016-08-18 7 views
4

この特定の問題に関するいくつかの問題があります。Angular2 Router CanActivate、パラメータ付き?

私は最近Anger2プロジェクトに取り組んでいます。とにかく私は今問題に巻き込まれています。廃止されたルータでは、ルートのデータ部分にユーザ役割を追加しました。ルートをアクティブにする前にこの値をチェックできるように、routerOutletをオーバーライドしました。

現在、私たちはCanActivate Class/Interfaceの行に従うことができます。

今私は、このようなCanActivateクラスに(私は列挙型に平手打ちしました)アクセス権を提供できるようにしたいと思います。ユーザーが自分のSessionServiceにアクセスしてログインしているかどうかを確認する前に、ユーザーに特定の権限があるかどうかを確認する必要があります。

私は今すぐ見るごとに、すべての単一のアクセス許可に対してCanActivateを実装する新しいクラスを実装する必要があります。今これは私が私達はこの正確なプロジェクトの初期段階ではしかし、だとあまり考えず、私は私がその意志の実装である前に私が見ることができるどのような11

にこれを改善することができ7を持っていると思います意味しますこのようなcan-activeを実現するためには、3〜5行程度の費用がかかります。しかし、私はプロパティやパラメータを提供できる実装でより多くの助けを得ています。

CanActivateIfUserHasPermissionsViewContentAndViewUsersあるいはさらに長い:私のようなクラスを実装する必要があるだろう状況を考えないように

私の状況では、アクセス許可は基本的に複数のアクションです。ビューのように、すべてのコンテンツの要素、または編集それらのすべてなど

+0

良い質問:

私のソリューションは、この他の質問に私の議論に基づいています。次のルートを 'CanActivateGuard'にインポートして、ユーザに許可があるかどうかを確認することができます。 –

+0

ルートオブジェクトではなく、パスが正しく取得されます。子ルートではどうなりますか、それでも一致しますか?あなたのガードは、子供のルートについても知っていますか?または、ルート設定用にサブモジュールをスキャンしますか? まだチェックしていません。 –

+0

私は今確認するコードがありません。しかし、私は、あなたが 'ActivatedRouteSnapshot'httpsを取得しますthnik://angular.io/docs/ts/latest/api/router/index/ActivatedRouteSnapshot-interface.html –

答えて

1

だから私はのparamsと私のCanActivateを実装する方法を見つけることができませんでした。

私は今、私にとってはうまくいくと思われる回避策を見つけました。 モジュール構成にルートをロードできるサービスがあります。 (私はちょうどモジュールのコンストラクタでそれを追加します)。

私のルートにはデータ{権限:ここでは私の値}が含まれています。 canActivate実装でも同じサービスが使用されるため、canActiveフックでチェックされます。私はそれが別の側から行うことができると思います:) Angular2 RC5 Cross-Module Provider/Scanning

+0

CanActivateフックでデータにどのようにアクセスしますか?私がそれをやろうとすると、すでにコンポーネントにImがある場合にのみアクセスできます。私がCanActivateガードにいるとき、私はルートで指定されたデータにアクセスできません。 –

+0

こんにちは、述べたように、私はルートをサービスにロードします。私のアプリケーションの構築に。したがって、NgModuleがロードされるとき。 このサービスを有効にすると、ターゲットパスに基づいてこのサービスからのルートの完全な情報を取得できます。(私はこれに基づいて私のルートを返す方法を作った)。 そのようにして、私は完全なデータを取得し、検証するかどうかを確認することができます –

関連する問題