在RESTful Spring MVC应用程序中,限制用户更新域对象的能力的最有效方法是什么?
想象一下具有以下网址的电影服务:“service / movie / id”。有2组用户,管理员和基本用户。
虽然管理员可以使用PUT请求更新电影DTO的所有属性,但基本用户可能只更新它们的一部分。
使用Spring安全性实现此目的的最佳方法是什么?
我考虑过为管理员和基本用户提供单独的网址,但这似乎不够优雅。
答案 0 :(得分:1)
您可以使用@PreAuthorize
注释来检查角色。看看它是否是你需要的。
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/el-access.html#el-pre-post-annotations
<强>更新强>
您可以将@PreAuthorize("hasRole('ROLE_USER','ROLE_ADMIN')")
用于多个角色。
答案 1 :(得分:0)
我找到了一种非常简单的方法来实现这一点,但它可能不是最佳解决方案:在我的控制器方法中,我可以简单地找出用户的角色等:
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
然后将其路由到特定于用户角色的服务方法。