2

私は現在、ロールベースのアクセス制御ロジックを必要とするアプリケーションのために Angularjs を学んでいます。ユーザー ロールに基づいて特定のページへのアクセスを制限するロジックが必要になるシナリオがあります。ユーザーの役割に基づいて、ページのセクションまたはフォームの特定のフィールドへのアクセスを制限する必要があるシナリオは他にもあります。Angularjs がクライアント側の方法論である場合、クライアントがアクセスできないと思われるアイテムにクライアントがアクセスできないようにする場合、これは問題を引き起こすようです。

Angularjs に干渉することなく、サーバーからこれらのシナリオを処理するための現在のアプローチは何ですか?

ページセクションへのアクセスを制限するためにカミソリにアクセスできることは知っていますが、Angularjs にはどのような問題があり、カミソリと角度ビューの構文を混在させることをお勧めしますか?

Angularjs に移行する際に、これを処理する方法に頭を悩ませています。

4

3 に答える 3

0

方法の 1 つは、ユーザーがページに対して (angular で) 承認されているかどうかを確認するサービスをセットアップしてから、ルートにパラメーターを設定する必要があります。

{
    "/admin": {
        templateUrl: 'partials/admin.html', 
        controller: 'AdminCtrl', 
        requireLogin: true//THIS
}

$locationChangeStartイベントを処理して、コントローラでのナビゲーションをキャンセルします。

(これはすべて、私が下に投稿した記事に示されています)。

私の提案は、個々のコントローラーを使用して論理ページ要素ごとにビューを作成し、例と同じ方法でアクセスを処理することです。ページごとではなく、ビューごとになります。

フォームから入力を追加/削除する場合、作成したサービス内でこれを処理し、アクセスレベルに応じて要素を ng-show/hide する方法があるかもしれません。

「Angular での役割ベースのアクセス制御」を Google ですばやく検索すると、多数の有用なチュートリアル/記事が表示されます。

これを見る

And This (同じ例でさらに詳しく)

于 2014-10-16T16:18:52.637 に答える
0

次の 2 つの部分に分けて考える必要があります。

  1. API の保護 (ASP.NET Web API)
  2. セキュリティ/ロール情報を使用して適切な UI を表示する (利用可能なオプションとルート、要素の有効化/無効化など -> AngularJS)

API クライアントは悪意のあるものであると想定する必要があります。それらは必ずしもアプリケーションではありません。

認証/承認オプションに関して: JWT などの HTTP ヘッダー トークンは一般的なオプションですが、特にクライアントがすべて Web ベースの場合は、HTTP のみの Cookie も適切なオプションです。JWT のもう 1 つの利点は、クライアント (AngularJS) がペイロードを読み取れるようにし、ユーザーがアクセスを許可されているものに関する情報を簡単に共有できることです。Cookie を使用する場合、通常は別の方法でその情報を提供する必要があります (サーバー側のインジェクションや API 呼び出しなど)。

トークン/クッキーを生成する方法 (およびクレームに関してそれらに含まれるもの) は、ユーザーを認証する方法によって異なります。独自の ASP.NET MVC ログイン フォームにすることができ、必要に応じて資格情報がデータベースに格納されます。

必要に応じて、MVC ビューを AngularJS テンプレートとして使用できますが、レイアウト以外の利点はあまり見られません。

于 2017-10-13T19:33:07.107 に答える