【发布时间】:2019-11-14 05:01:16
【问题描述】:
假设我有一个像下面这样的最小 RESTful 控制器,顺便说一下使用 Java 8 和 Spring Boot 2,...
@RestController
class MyController {
@Autowired
private PostService service;
@GetMapping
public Post get() {
return service.getLatest();
}
}
我已经使用 Spring Security 模块成功地保护了这条路线。现在我想只允许资源所有者访问该资源。对于资源所有者,我的意思是创建者或简单地说:
Post myPost = new Post();
...
myPost.getCreator().equals(currentUser); // Should be true when access is granted
我发现了很多关于基于角色的访问,但几乎没有检查所有权...当然我可以在控制器内放置一个 if 语句并抛出异常,但我打算使用类似 Spring 的 Expression - 基于访问控制。
还有其他想法吗?有人对资源的所有权检查有一个好主意或例子吗?
【问题讨论】:
-
我认为(但我不确定),“基于所有者的访问”被称为“自主访问控制” i> 因为所有者始终具有访问权限,并且所有者决定还有谁可以访问该资源。将此与“强制访问控制” 进行对比,系统策略确定谁有权访问资源。在强制访问控制系统中,资源的所有者/创建者可能无权访问该资源。
标签: java spring spring-boot security spring-security