0

現在、複雑な AngularJS ベースのフロントエンド Web サイトを構築しています。バックエンドには PHP と MySQL が使用されています。

2 つの質問があります。どちらもユーザー権限に関するものです。

  1. ユーザー権限を格納するための db スキーマをどのように設計しますか? 将来的には、事前定義された特権 (いくつかのセット) を追加し、それらを無料/プレミアム アカウント タイプとして使用したいと考えています。

  2. フロントエンドでこれらの権限をどのように管理しますか? いつ特権を取得/再取得しますか? 特権を必要とする各メソッドでそれらをどのように確認しますか?

定義できる権限の数を制限せず、何も定義されていない場合は基本的な権限のデフォルト セットを提供するスマートなソリューションを探しています。

SQL
の実装について 権限は、特定の会社のすべてのユーザーに適用する必要があります。
db スキーマは次のようなものです。

  • 会社 (company_id など)
  • ユーザー (user_id、company_id など)

私が理解していることから、特権スキーマは次のようになります。

  • 特権 (prev_id、prev_name)
  • company_privileges(company_id, prev_id)


ユーザーが企業にログインする際のユーザー権限処理は、Cookie/セッション/フロントエンド サービスで保存されます。

フロントエンドで確認するには、現在のユーザー権限と必要な権限を比較するディレクティブを使用します。

data-privilege required=1 ユーザー=1

バックエンド部分に関しては、現在、サーバーへの各リクエストでユーザートークンを送信しています。このトークンは、データベースに対して検証されます。これを使用して、ユーザー権限を取得して保存し、ユーザーが特定の機能にアクセス/使用できるかどうかを確認できます。

真/偽の特権を追加するだけでなく、数値特権のサポートが必要
です。たとえば、特定のリストで表示可能なアイテムの数を制限します。

私は正しいと思いますか?何か不足していますか?

要件
- 会社ごとに無制限の権限
- デフォルトの権限はすべての会社に適用する必要があります

4

2 に答える 2

0

GoDiscoが実装するのに適していると判断した最適なソリューションは、実際には非常にシンプルです。

サーバー側: 1. RESTful API を構築します。 2. この RESTful API は、3access_keyの単純な実装として、常に を要求しOAuth ます。各要求では、ユーザーがこのデータにアクセスするための適切な権限を持っているかどうかを確認し、そうでない場合は「401 ACCESS」を返します。拒否された"

AngularJS 側:

  1. 「認証サービス」モジュールを構築します
  2. ユーザーがログインすると、システムに彼のロールがキャッシュされました
  3. ルーターチェック
    1. $routeこのサービスは、および$locationサービスをリッスンします。
    2. ルーティングするリクエストごとに、当社のサービスは、現在ログインしているユーザーがリクエストされたルートに対して適切な役割を持っているかどうかを確認します。ルート構成で許可されるロールを定義するだけです。
    3. ユーザーが許可されていないルートを要求した場合、ルートをエラールートに変更してエラーをスローします。
  4. レストキャッチ
    1. モジュールを使用Restangularして RESTful リクエストを処理することにしました
    2. Restangular使用して、リクエストを として使用することでエラーをキャッチできますpromise。401 エラーが発生した場合は、それを処理します。
于 2013-11-03T23:31:58.047 に答える