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


问题内容

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

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


问题答案:

我解决它通过使用@PreAuthorize("authentication.name == #userId"),而不是@Secured(value = {"userid"})@Secured(value = {"#userid"})类似建议,那些没有工作。

注意,有必要添加<security:global-method-security pre-post- annotations="enabled"/>到servlet上下文配置文件中。