SpringSecurity를 사용하며 input태그에 file을 보내주어야 하여
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
<form id="updateForm" method="post" enctype="multipart/form-data">
위와 같이 적용하였더니 해당 기능에서 권한이 자꾸 튕겨나갔다.
multipart/form-data를 사용 할 경우에는 input이 아닌 action url 정보에 토큰값을 넣어야줘야한다.
<form id="updateForm" action="/user/updateUserInfo?${_csrf.parameterName}=${_csrf.token}" method="post" enctype="multipart/form-data">
(참고 https://taesan94.tistory.com/134)
또 Controller에서 잘못한 부분이 있었다.
@RequestMapping("/updateUserInfo")
public String updateUserInfo(@RequestParam(value="userImgOriName",required=false) MultipartFile file,
@RequestParam UserInfoDTO userInfo)
form으로 데이터를 보내고있었는데 form 하위에 있는 파라미터값들이 Controller의 DTO로는 못받는 것이였다.
이유는 필드에 DTO와 일치하는 name을 안 적어두고 있었기 때문이다.
@RequestMapping("/updateUserInfo")
public String updateUserInfo(@RequestParam(value="userImgOriName",required=false) MultipartFile file,
@RequestParam Map<String, Object> param)
필드에 DTO에 일치하는 name을 안 넣고 파라미터를 넘길때엔 Controller에서 Map으로 받으면 된다.
DTO로 받고싶으면 DTO와 일치하는 name을 넣어주면 된다.
'ERROR' 카테고리의 다른 글
| [Vue3] vue Uncaught (in promise) ReferenceError: React is not defined (0) | 2024.11.01 |
|---|---|
| submit is not a function at HTMLAnchorElement.onclick 에러 (0) | 2024.06.20 |
| [FTP] Permission Denied 파일질라 FileZilla 에러 (0) | 2023.12.06 |
| [ajax] status 200 parseerror (0) | 2023.09.19 |