我对 Spring Security Framework 很陌生,这里有一个小问题要解决。
我已经设法将 @PreAuthorized("hasPermission('#person', Permission) 注释用于服务和控制器方法。这对我来说很好,但这仅适用于整个 Domain 类。
在我的例子中,有一些字段应该显示给用户,尽管他们没有读取这个人的权限。
一个简单的例子:
- 用户登录。
- 他想访问 Jon Doe 的个人资料页面。
- 但是用户没有阅读 Jon Doe 的权利。
- 系统应该会注意到用户他没有权限并显示名称,例如:您没有权限从 Jon Doe 读取个人资料。”
这是一个非常简单的例子,用户可以看到更多的字段。
希望你能明白我的要求。
(对不起,我的英语不是那么好。)
编辑
个人控制器
@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);
}