限制用户修改域对象中字段的最简单方法是什么?

时间:2013-05-14 13:43:08

标签: spring-mvc spring-security

在RESTful Spring MVC应用程序中,限制用户更新域对象的能力的最有效方法是什么?

想象一下具有以下网址的电影服务:“service / movie / id”。有2组用户,管理员和基本用户。

虽然管理员可以使用PUT请求更新电影DTO的所有属性,但基本用户可能只更新它们的一部分。

使用Spring安全性实现此目的的最佳方法是什么?

我考虑过为管理员和基本用户提供单独的网址,但这似乎不够优雅。

2 个答案:

答案 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();

然后将其路由到特定于用户角色的服务方法。