使用Spring-Security验证方法参数

时间:2013-07-04 14:26:54

标签: spring-security

我正在使用Spring Security 3.1.4。

我有一个UsersManager类,如下所示:

public class UsersManager {

@Secured("ROLE_ADMIN")
public void update(User user){
    ....
            ....
}
}

public class User{
    Integer id;
    String name;
    Integer departmentId;

}

要求如下: 允许用户仅更新其部门中的用户。 考虑到用户依赖安全会话,有没有办法使用Spring Security?

1 个答案:

答案 0 :(得分:1)

您需要扩展org.springframework.security.core.userdetails.User并添加departmentId属性。然后确保Spring Security将此对象用作主体(提供UserDetailsS​​ervice,在登录时设置departmentId)。然后你可以这样做:

@PreAuthorize("hasRole('ROLE_ADMIN') and #principal.departmentId==#user.departmentId")
public void update(User user){