我使用的是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做到这一点?
发布于 2013-07-04 22:35:29
您需要扩展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){https://stackoverflow.com/questions/17472782
复制相似问题