You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中更新/删除操作的资源所有权验证最优方案

资源所有权校验方案咨询(UPDATE/DELETE场景)

我想了解在执行UPDATE和DELETE操作时,如何检查登录用户是否为目标资源的所有者,目前初步构思了两种实现思路,同时写了一个初步的ResourceAccessHelper工具类,但不确定其中调用的companyService.getCompanyById方法抛出异常是否合理——毕竟companyService.updateCompany本身也会执行相同的资源存在性与所有权检查。想请教哪种实现方式更优,或是有其他更合理的实现方案?

现有代码实现

CompanyDto类

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CompanyDto {

    private Long id;

    @NotNull
    @NotBlank
    private String companyName;

    @NotNull
    @NotBlank
    private String description;

    private AppUserDto adminProfile;

}

CompanyController类

@PutMapping("/companies/{companyId}")
public ResponseEntity<Void> updateCompany(@PathVariable("companyId") Long companyId,
                                          @RequestBody @Validated CompanyDto companyDto) {

    CompanyDto updatedCompany = companyService.updateCompany(companyId, companyDto);

    return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}

ResourceAccessHelper工具类

@Component
@RequiredArgsConstructor
public class ResourceAccessHelper {

    private final CompanyService companyService;

    public boolean checkCompanyOwnership(Long companyId, Authentication authentication) {

        CompanyDto companyDto = companyService.getCompanyById(companyId);

        return companyDto.getAdminProfile().getUsername().equals(authentication.getName());
    }
}

内容的提问来源于stack exchange,提问作者solanke57

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 20:32:38