Spring - 如何保护 RESTful 私有资源?

use*_*028 3 rest spring spring-mvc spring-security

我有一些 RESTful 服务,用 Spring MVC 实现,公开了一组资源。我已经使用基于 HTTPBasicAuthentication 和 HTTPS 的身份验证。某些资源必须仅供某些用户访问。

例如,我希望 URI/users/{userid}/photos中的所有子资源只能由用户访问userid。实际上在我的应用程序中,所有经过身份验证的用户都可以访问它们。我怎样才能保护他们免受其他用户的侵害userid?如果我只想允许一部分用户(例如userid的朋友)访问此资源,该怎么办?

jus*_*tMe 5

你可以在你的方法上做这样的事情:

    @ResponseBody
    @RequestMapping(value = "/users/{userid}/photos", method = RequestMethod.GET)
    @Secured(value = {"userid"})
    public ResponseEntity<ModelMap> getPhotos(....) throws Exception {
Run Code Online (Sandbox Code Playgroud)

如果将来需要,您可以通过执行以下操作来添加更多用户

    @Secured(value = {"ROLE_ADMIN", "userid"})
Run Code Online (Sandbox Code Playgroud)