「管理者」Web アプリケーションのアクセス許可システムを設計する最善の方法を検討しています。アプリケーションには多くのユーザーが含まれる可能性が高く、各ユーザーに特定のロールを割り当てることができます。これらのユーザーの一部は、ロール外で特定のタスクを実行することを許可される可能性があります。
これを設計するには 2 つの方法が考えられます。1 つは、すべてのユーザーの行を含む「アクセス許可」テーブルと、タスクごとに 1 つのブール列を使用して、それらのタスクを実行するアクセス許可をユーザーに割り当てます。このような:
ユーザー ID ユーザーの管理 製品の管理 プロモーションの管理 注文の管理 1 真 真 真 真 2 偽 真 真 真 3 偽偽偽真
私が考えた別の方法は、これらのユーザー権限を保存するためにビット マスクを使用することでした。これにより、管理できるタスクの数が 32 ビット符号付き整数の 31 に制限されますが、実際には、ユーザーが実行できる特定のタスクが 31 を超えることはほとんどありません。この方法では、データベース スキーマがより単純になり、アクセス制御が必要な新しいタスクを追加するたびにテーブル構造を変更する必要がなくなります。このような:
ユーザー ID のアクセス許可 (8 ビット マスク)、表では int になります 1 00001111 2 00000111 3 00000001
ここの人々は通常、どのようなメカニズムを使用しており、その理由は何ですか?
ありがとう!