私のアプリケーションには、Organizationというトップレベルのエンティティがあります。ユーザーと組織の関係は多対多です。
このため、次のシナリオが考えられます。
- UserAにはOrganizationAのロールROLE_ADMINがあります
- UserAにはOrganizationBのロールROLE_USERがあります
UserAがOrganizationBのリソースにアクセスするときに、管理者としてアクセスしていないことを確認する必要があります。したがって、ユーザーが組織レベルで正しい役割を持っていることをさらに確認する必要があります。これを可能にするSpringSecurityに組み込まれているものはありますか?そうでない場合、これを解決するための最善の方法を誰かが知っていますか?
更新:もう少し情報...
ユーザーがログインして、操作する組織を選択します。それはセッションに保存されます。それを超えると、URLはSecuredアノテーションでロックダウンされます。つまり、UserAがログインしてOrgAを選択した場合、/ admin / user / createにアクセスできるはずですが、ログインしてOrgBを選択した場合は、そのURLにアクセスできないはずです。
長い道のりは、これが重要なすべてのメソッドにチェックを追加することです。したがって、「わかりました。あなたはOrgAの管理者ですが、OrgBの管理者ではなく、OrgBを使用してログインしているので、このリクエストを拒否してください」というサービスメソッドを呼び出します。
私はこれを処理するためのより多くのGrails/Spring-Securityの方法を望んでいます。