👦🏻이번엔 유저의 객체를 인증 객체로 받아보자!
원래 userSession에 저장된 email과 post의 유저의 email을 비교하던 부분을 Spring Security의 인증 객체의 email과 비교하도록 변경합니다. <sec:authentication> 태그를 사용하면 인증 객체를 받아올 수 있습니다.
<sec:authentication property="principal" var="user"/>
<c:if test="${user.email == post.user.email}">
UserArgumentResolver를 등록하는 부분을 주석처리합니니다.
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
WebMvcConfigurer.super.addArgumentResolvers(resolvers);
// resolvers.add(new UserArgumentResolver());
}
@AuthenticationPrincipal로 유저의 정보를 받아옵니다. 이 Annotation은 현재 인증된 객체를 받아오는 Annotation입니다.
@PostMapping
public @ResponseBody int postPost(@RequestBody PostVO postVO, @AuthenticationPrincipal UserVO user) {
postVO.setUser(user);
postService.save(postVO);
return postVO.getId();
}