我使用 Spring Security 来保护和评估 @PostAuthorize 和 @PreAuthorize 注释中的表达式以授权服务方法。我有一个需求,需要检查返回的对象是否具有登录系统并调用此方法的相同用户 ID。
// this allows the ids of other users too
@PostAuthorize("#returnObject!=null?returnObject.userId==principal.account.acid:true")
public AudioClip findAudioClip(int clipId) {
.....
AudioClip clip = dao.findById(clipId);
// may also be null
return clip;
}
音频剪辑.java
@Component
public class AudioClip implements java.io.Serializable {
private java.math.BigDecimal id;
private java.lang.Integer userId;
.....
}
从数据库中获取的对象包含创建此 db 对象的 userId。因此,只有他有资格访问该组件。怎么比较returnObject.userId和已经登录系统的userid?