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上下文配置文件中。