AngularJSで承認を実装したいと思います。ある種のソーシャルメディアである私のプロジェクトでは、異なるロールや同じロールでもビューファイルが異なって見えることがあります。AngularJSで承認を実装する
たとえば、顧客と会社の2つの役割があるとします。
共有ビューファイルでは、顧客と会社が異なることがある可能性があります。 (異なる役割)。
お客様は、ページ内にボタンが表示されている可能性があります。 (同じ役割)
私は、ロールを確認するだけで認証を実装することはできません。状況によっては、サーバーと通信する必要があることもあります。
は、私は複数の選択肢があります。
は、彼らが偽のデフォルト値を持って対応する権限を持つ私のコントローラのスコープ内の変数を作成します。
$scope.auth = { canRate: false, isConnected: false };
はその後、サーバーとの変化への接続します応答に基づくauthオブジェクトの値また、ビューファイルに
ng-if
を使用して、要素を表示または非表示にします。ディレクティブを作成し、カンマ区切りのパーミッションを渡します。
<button auth="canRate,isConnected"></button>
その後、権限を確認するためにサーバーに接続します。それらのすべてが真の場合は、要素を表示します。
- を使用し、ルーティング時にサーバーから必要なすべてのデータを取得すると、各ページの読み込み時間が長くなります。
私はこの問題を解決するより良いアプローチがあることを知りたいですか? どんな種類のヘルプやコメントをいただければ幸いです。
注:もちろん、サーバー側の認証と承認があります。私は説明したユーザーの役割やその他の条件に基づいて、ビューファイルにいくつかの要素を表示したいだけです。また、この要素はボタンやリンクのようなものです。共有ビューと要素を隠す代わりに、状況ごとに異なるビューを使用できます。
どのように私はこのアプローチが表示目的のみであり、セキュリティの課題を解決できないことを知っています。
注:をご覧ください。this repositoryをご覧ください。
ネイティブの角度ルータまたはui-routerを使用するより良い代替手段があります。 Googleは "oauth角度"といくつかの例を見つけるために。 –
あなたは私の質問を非常にうまく理解していないようです:) @VladimirM –
真実なのは、正確なユースケースはちょっと分かりません。それでも私は、ルータの機能を使用する方が適切だと私の主張で立っています。必要なのは、認証後に(必要に応じて)サーバーからユーザープロファイルを収集するサービスです。また、状態に進む前にプロファイル収集タスクを解決してから、レンダリングにロール情報が必要になります。デフォルト値を気にする必要がないように、ビューをレンダリングするときにサービスに実際の値があるためです。実際には、役割に基づいて状態を選択することができます。 –