목차
- 게시글 수정 구현
- 게시글 삭제 구현
- UX 개선
게시글 수정 구현
로그인이 되어있을 때만 볼 수 있게 위와 같이 el 표현식을 작성해줍니다.
!empty SessionScope.princiapl
principal에 어떤 것들이 담겨있지 않다면 접근이 불가능합니다.
바로 로그인을 해야지 principal이 생기며, 이 principal은 session에 담겨있습니다.
바로 userEntity의 형태로 말이죠!
아래 사진에 나와있습니다.
다만 위는 인증만 된 것이므로 , 권한을 아래와 같이 설정해둡니다.
SessionScope를 통해서 세션에 principal이 있고 거기에 id값이 있으면 값이 왼쪽에 담깁니다.
postEntity.user.id는 우리가 컨트롤러를 만들어주어 postEntity를 detail에 넘겨주게 됩니다.
그리고 넘겨받은 postEntity에는 user값이 담겨있으며, 그 유저의 id를 가져옵니다.
컨트롤러 설정값
Post의 user객체가 있는 모습
principal에 userEntity가 담겨 있는 모습
인증과 권한이 구현되어있는 모습
로그인하고 post목록에서 선택합니다
로그인한 상태에서는 수정과 삭제 버튼이 보이지만
로그인하지 않으면 보이지 않습니다.
여기에서는 본인의 글만 수정 및 삭제를 할 수 있습니다.
(즉, 본인이 로그인을 해야지 버튼이 뜬다는 것)
게시글 삭제 구현
로그인을 합니다.
그래야만 삭제를 할 수 있습니다.
(인증과 권한)
많은 Post 중에서 로그인한 User가 쓴 Post에 상세보기를 해서 들어갑니다.
삭제 버튼을 눌러봅니다.
HeidiSQL에 들어가 보고 나서 DB에서 지워진 것을 확인할 수 있습니다.
구현한 코드가 다른 것에 비해서 간단합니다.
그러나 에러가 뜹니다.
어디서 문제가 생겼는지 확인해 봅시다.
/
*확실하지 않음*
바로 제가 45번째 줄인 delete문만 추가해주고 model에 담아서 주지 않아서 그런 것입니다.
400번 에러가 떠서 model을 추가를 해주고 이것에 새로운 것을 담아서 반환해줍니다.
*문제 해결은 되었음*
/
권한 체크를 추가해줍니다.
UX 개선
@ResponseBody로
UX 개선을 위해 Script함수를 새로 만들어줍니다.
하지만 UX 개선을 위해
삭제했을 때 alert가 뜨지 않게 수정해줍니다.
삭제 성공했을 때 alert문이 뜨는 것보다 안 뜨는 것이 더 낫습니다.
/*
Tips
location.href 는 script 내장 함수며
이 함수는 데이터를 들고 가지 않습니다.
(위에서는 데이터를 들고 갈 이유가 없기 때문에 location.href을 사용합니다,
그리고 @ResponseBody의 형태로 반환을 해야 하기 때문이기도 합니다.)
즉, script문으로 반환을 하려면 @ResponseBody를 써야 한다는 것이죠.
바로, url로 우리가 만들어놓은 것은
redirect을 하지 못한다는 뜻입니다.
스크립트로 처리할 때는 데이터를 못 넘겨주기 때문에
무조건 requestDispatcher로 써서 넘겨주어야 합니다.
위에서 back은 history.back을 사용해서 뒤로 가는 것을 의미합니다.
*/
'BackEnd > Spring' 카테고리의 다른 글
[Spring][19]Updating post[글쓰기 수정 구현] (0) | 2021.07.19 |
---|---|
[Spring][18]Using summernote[글쓰기 작성 구현] (0) | 2021.07.19 |
[Spring][16]Main Page[메인페이지, 상세페이지 구현] (0) | 2021.07.14 |
[Spring][15]Update practice[회원정보 수정 및 주소 API활용하여 가져오기] (0) | 2021.07.14 |
[Spring][14]API Practice2[Address API 구현코드, Debug] (0) | 2021.07.12 |