0

我像这样公开一个 Spring REST 服务..

@RequestMapping(value = "/{id}", method = RequestMethod.GET, headers = Constant.ACCEPT_APPLICATION_JSON)
@ResponseBody
public IndividualProviderDto showJson(@PathVariable("id") Long id) {
    IndividualProviderDto individualProviderDto = individualProviderService.findIndividualProvider(id);
    if (SecurityUtils.getCurrentLogin().equals(individualProviderDto.getUserName())) {
        individualProviderDto.setCredential("");
        HttpHeaders headers = new HttpHeaders();
        headers.add(Constant.CONTENT_TYPE, Constant.APPLICATION_JSON_CHARSET_UTF8);
        return individualProviderDto;
    }
    throw new IllegalArgumentException("User not found"); 
}

在上面的代码中,我明确地进行检查以确保 id 属于已登录的 USER。

SecurityUtils.getCurrentLogin().equals(individualProviderDto.getUserName()

必须在我需要保护资源的任何地方应用此检查。当然,我可以拥有一个方面并使用切入点表达式从一个地方应用它。我也听说过伪造 url 的 ESAPI

但我想知道 Spring Security Configuration 是否提供了开箱即用的东西,这样我就不会重新发明轮子。

4

1 回答 1

1

Spring 安全性不是答案——它为身份验证授权提供了便利。检查特定实体的可用性(在您的情况下id)应该是服务层的一部分,因为它已经在您的代码中实现。

于 2014-09-16T18:07:59.403 回答