我公开了这样的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()
必须在需要保护资源的任何地方应用此检查。当然,我可以有一个Aspect,并使用切入点表达式从一个地方应用它。我也听说过伪造网址的ESAPI
但我想知道Spring Security配置是否提供开箱即用的功能,因此我不会重新发明轮子。
答案 0 :(得分:1)
Spring安全性不是答案 - 它为身份验证和授权提供了便利。检查特定实体(在您的情况下为id
)的可用性应该是服务层的一部分,因为它已经在您的代码中实现。