我已经使用 Spring MVC 3.1 创建了一个 Web 服务(RESTful),并添加了 Spring 安全性。其中一个端点/users/{id}
应该只对管理员可用。然而/users/{id}
,当且仅当检索到的资源的用户名与登录用户的用户名匹配时,用户也可以使用。这可以通过使用 @PostAuthorize 注释来解决。
现在,如果用户访问/users/999
(不是登录用户),我应该返回 HTTP 状态 404 还是 HTTP 状态 403?目前我正在执行 404(未找到),但它应该是 403,因为用户不应该能够访问它吗?
如果是这样,当您依赖 @PostAutorize 注释时,您将如何做到这一点?
@PostAuthorize("returnObject.username == principal.username and hasRole('ROLE_USER')")