私のシステムは、プロジェクトとのユーザーという2つのビジネスオブジェクトタイプで構成されています。ユーザー権限によるユーザー権限を保存する場所と方法
、S /彼ができる:
| Action | Role |
|-----------------|------------------|
| view projects | Clients |
| edit projects | Devs |
| manage projects | Managers |
| manage users | Administrators |
問題があり、クライアントは、いくつかの特定のプロジェクトを見ることができます。プロジェクトはパブリックに設定することができます(誰もが見ることができます)。または特定の特定のクライアントに表示されるように設定できます。
開発者は、管理者が設定した自分自身のプロジェクトや他のプロジェクトを編集することができます。管理者は、管理者が特定のプロジェクトの管理者に対してその機能を特に拒否しない限り、ユーザー/プロジェクトを作成および管理できるはずです。 管理者は、すべてのユーザーとすべてのプロジェクトを含む、システム上のすべてのものを管理する完全なアクセス権を持っています。
これは私が達成しようとしているものです。 「どうしたら私を心配しているの?
通常、役割の場合、ユーザーの役割の種類を指定する「役割」列がユーザー表にあります。開発者であるクライアントは同時にいないので、この列はビットマスクである必要はありません。
次の手順は、ユーザーが自分の役割に従ってアクセスできるものを指定するルールシステムを持つことです。これを既存のテーブル(これはちょっと汚い配列フィールドなし)に入れることは不可能なので、別のテーブルが必要になると思います。
これは次のようになります。
| user_id | access | object_type | object_id |
|---------|---------|-------------|-----------|
| 45 | allowed | user | 42 | user 45 can manage user 42
| 42 | denied | project | 30 | user 42 cannot do anything with
project 30
表は、ユーザーの役割を使用する必要があります。たとえば、ユーザ45がクライアントの場合、ユーザ42には何もできません(ルールが存在していても)。一方
、私は私はこの1つ上のあまり柔軟性を狙ってるけど、私はこの種の機能を実現する方法はありません受け入れることを拒否。
ので、実際の質問:
- これは良いアイデアですか?
- 優れたシステムはありますか?
- 他の提案はありますか?
参考:http://en.wikipedia.org/wiki/Access_control_list –