Acegi (Spring) セキュリティを使用して、ロール ベースのアクセス制御を備えた Web アプリケーションを構築しています。したがって、ロールを持つさまざまなユーザーがいます: ROLE_ADMIN
、ROLE_USER
など。
ただし、さまざまなユーザー制約を実装する必要があります。
例を考えてみましょう:
ユーザーがオンラインで映画を視聴できるサイトがあるとします。と の役割
ROLE_STANDARD_USER
を持つユーザーがいますROLE_VIP_USER
。標準ユーザーは週に 3 本の映画を視聴でき、VIP ユーザーは週に 10 本の映画を視聴でき、その他の特典もいくつかあります。また、標準ユーザー グループには、1 週間に 2 本の映画を追加で提供したいユーザーが 1 人います。許可される動画の数は変更される場合があります。
また、映画にはさまざまなカテゴリがあります。ファンタジー、コメディ、クラシック、新しい映画などです。役割に関係なく、一部のユーザーが特定のカテゴリにのみアクセスできるようにしたいと考えています。カテゴリは動的に作成および削除できます。
このようなタイプのユーザー制約を実装するための標準的な方法はありますか?
Spring Security のロールとパーミッションを使用して実行できますか?
または、ルール ベースのエンジンをアプリに追加することを検討する必要がありますか?
ありがとうございました。
編集:
上記の例は架空のものです。私のプロジェクトは、学生にさまざまなネットワーク (およびその他の) 機器へのリモート アクセスを許可することに関係しています。ただし、ユーザー制約の種類は同じである可能性があります。
残念ながら、ユーザー アクセスと制約のモデルは完全ではなく、安定していません。近い将来、ユーザーにさまざまな追加の制約を実装するように言われるかもしれませんが、それは現在知られていません。
したがって、将来的に新しいユーザー制約の追加または変更が容易になり、内部モデルやデータベース構造の大幅なオーバーホールを必要としないパスを選択したいと思います。それができれば。
編集 2
現在、基本的なユーザー制約はハードコーディングされています (プロトタイピング システムの残り物)。最初に何らかのパラメーター化されたビジネス サービス オブジェクトにリファクタリングしてから、そこからどこへ行くことができるかを考えてみようと思います。また、Spring Security Authorization Decision Manager の使用も検討します。
すべての提案に感謝します!