【发布时间】:2019-03-07 01:45:07
【问题描述】:
我一直在我的工作中实施 Jhipster 并喜欢它。我被要求实施一项安全验证,即不应允许一个用户编辑其他用户创建的实体。为此,我需要两件事:
首先,在所有实体中,添加与 User 实体的 ManytoOne 关系。
在后端中,在更新实体时在控制器中进行验证,以检查当前登录的用户是否与数据库中存储的用户相同。在前端显示/隐藏编辑按钮的逻辑也相同。
我为此做了一个 POC,它可以工作,但有点难看,检查代码:
public ResponseEntity<Entry> updateEntry(@RequestBody Entry entry) throws URISyntaxException {
log.debug("REST request to update Entry : {}", entry);
if (entry.getId() == null) {
throw new BadRequestAlertException("Invalid id", ENTITY_NAME, "idnull");
}
//here is my logic
Optional<Entry> entry_db = entryRepository.findOneWithEagerRelationships(entry.getId());
if(!entry_db.get().getUser().getId().equals(userService.getUserWithAuthorities().get().getId())) {
//throw someexception
}
//
Entry result = entryRepository.save(entry);
return ResponseEntity.ok()
.headers(HeaderUtil.createEntityUpdateAlert(ENTITY_NAME, entry.getId().toString()))
.body(result);
}
有没有更好或 OOTB 的方法来做到这一点???可能是春季安全中我不知道的东西??
感谢您的帮助!
【问题讨论】: