我正在使用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?
答案 0 :(得分:1)
您需要扩展org.springframework.security.core.userdetails.User
并添加departmentId
属性。然后确保Spring Security将此对象用作主体(提供UserDetailsService,在登录时设置departmentId)。然后你可以这样做:
@PreAuthorize("hasRole('ROLE_ADMIN') and #principal.departmentId==#user.departmentId")
public void update(User user){