現在、複雑な AngularJS ベースのフロントエンド Web サイトを構築しています。バックエンドには PHP と MySQL が使用されています。
2 つの質問があります。どちらもユーザー権限に関するものです。
ユーザー権限を格納するための db スキーマをどのように設計しますか? 将来的には、事前定義された特権 (いくつかのセット) を追加し、それらを無料/プレミアム アカウント タイプとして使用したいと考えています。
フロントエンドでこれらの権限をどのように管理しますか? いつ特権を取得/再取得しますか? 特権を必要とする各メソッドでそれらをどのように確認しますか?
定義できる権限の数を制限せず、何も定義されていない場合は基本的な権限のデフォルト セットを提供するスマートなソリューションを探しています。
SQL
の実装について 権限は、特定の会社のすべてのユーザーに適用する必要があります。
db スキーマは次のようなものです。
- 会社 (company_id など)
- ユーザー (user_id、company_id など)
私が理解していることから、特権スキーマは次のようになります。
- 特権 (prev_id、prev_name)
- company_privileges(company_id, prev_id)
ユーザーが企業にログインする際のユーザー権限処理は、Cookie/セッション/フロントエンド サービスで保存されます。
フロントエンドで確認するには、現在のユーザー権限と必要な権限を比較するディレクティブを使用します。
data-privilege required=1 ユーザー=1
バックエンド部分に関しては、現在、サーバーへの各リクエストでユーザートークンを送信しています。このトークンは、データベースに対して検証されます。これを使用して、ユーザー権限を取得して保存し、ユーザーが特定の機能にアクセス/使用できるかどうかを確認できます。
真/偽の特権を追加するだけでなく、数値特権のサポートが必要
です。たとえば、特定のリストで表示可能なアイテムの数を制限します。
私は正しいと思いますか?何か不足していますか?
要件
- 会社ごとに無制限の権限
- デフォルトの権限はすべての会社に適用する必要があります