Spring 数据 REST - 阻止 属性 基于角色的编辑
Spring Data REST - prevent property edit based on role
我使用 Spring Boot with Spring Data REST 进行数据访问,Spring Security 进行访问限制。
假设我有简单的实体:
@Entity
public class Person {
@Id @GeneratedValue
private Long id;
private String firstName;
private Boolean isAuthorizedForClasifiedData;
}
我在应用程序中有两个角色:USER 和 ADMIN。
有什么简单的方法可以防止用户更改 isAuthorizedForClasifiedData 的值,同时允许管理员更新它?
我想到的唯一解决方案是编写您自己的 setter 方法。
public void setIsAuthorizedForClasifiedData(Boolean isAuthorizedForClasifiedData) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Optional<? extends GrantedAuthority> role_admin = authentication.getAuthorities().stream().filter(role -> role.getAuthority().equals("ROLE_ADMIN")).findAny();
role_admin.orElseThrow(() -> new YourOwnForbiddenException());
this.test = test;
}
我使用 Spring Boot with Spring Data REST 进行数据访问,Spring Security 进行访问限制。
假设我有简单的实体:
@Entity
public class Person {
@Id @GeneratedValue
private Long id;
private String firstName;
private Boolean isAuthorizedForClasifiedData;
}
我在应用程序中有两个角色:USER 和 ADMIN。
有什么简单的方法可以防止用户更改 isAuthorizedForClasifiedData 的值,同时允许管理员更新它?
我想到的唯一解决方案是编写您自己的 setter 方法。
public void setIsAuthorizedForClasifiedData(Boolean isAuthorizedForClasifiedData) {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Optional<? extends GrantedAuthority> role_admin = authentication.getAuthorities().stream().filter(role -> role.getAuthority().equals("ROLE_ADMIN")).findAny();
role_admin.orElseThrow(() -> new YourOwnForbiddenException());
this.test = test;
}