1

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 でそれを行う方法はありますか?

4

1 に答える 1

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){
于 2013-07-04T14:35:28.910 に答える