私はSpring Security Frameworkを初めて使用し、ここで解決すべき小さな問題があります。
私はすでに @PreAuthorized("hasPermission('#person', Permission) アノテーションをサービスおよびコントローラーメソッドに使用することができました。これは私にとってはうまく機能しますが、これはドメインクラス全体でのみ機能します。
私の場合、この Person を読み取る権限がないにもかかわらず、ユーザーに表示する必要があるフィールドがいくつかあります。
簡単な例:
- ユーザーがログインします。
- 彼は、Jon Doe のプロフィール ページにアクセスしたいと考えています。
- しかし、ユーザーには Jon Doe を読む権利がありませんでした。
- システムは、ユーザーに権限がないことを通知し、「Jon Doe からプロファイルを読み取る権限がありません」のような名前を表示する必要があります。」
これは非常に単純な例です。ユーザーが表示できるフィールドは他にもあります。
私が求めていることを理解していただければ幸いです。
(私の英語が下手ですみません。)
編集
PersonController
@RequestMapping("/{id}")
public String get(@PathVariable("id") Long personId, Model model,HttpSession session) {
Person person = personService.findById(personId);
/* DO STUFF HERE */
return "person.show";
}
個人サービス
@PreAuthorize("hasPermission('#personId', <domainClass>, 'read')")
public Person findById(Long personId) {
return personRepository.findOne(personId);
}