hamlsy / forum-springBoot

personal study project by using SpringBoot, JPA
0 stars 0 forks source link

[FEATURE] 게시글 삭제 기능 구현 #1

Closed hamlsy closed 8 months ago

hamlsy commented 8 months ago

title

게시글 삭제 기능을 구현합니다.

check list

detail

  1. 삭제 버튼을 글 작성자에게만 보이도록 구현합니다.
  2. 버튼을 클릭할 시 안내 메시지가 나오고, 확인 버튼을 누르면 게시글을 삭제합니다.
  3. 글 작성자가 아닌 회원이 삭제 api를 요청하면 Exception을 표시합니다.
  4. 게시글이 삭제되면 번호(순서)를 업데이트하여 표시합니다.
hamlsy commented 8 months ago

문제사항

memberApi 를 통해 로그인 시 인증 문제가 발생합니다.

check list

~memberApi 로그인 문제 해결~

detail

w.a.UsernamePasswordAuthenticationFilter : An internal error occurred while trying to authenticate the user.

org.springframework.security.authentication.InternalAuthenticationServiceException: No result found for query [select m from Member m where m.userId = :userId]

UsernamePasswordAuthenticationFilter 에서 회원가입한 멤버를 인식 못하는 문제가 일어났습니다. SecurityConfig 설정에 문제가 있을 것으로 예상됩니다.

시도할만한 것?

  1. Security Config 멀티 로그인 설정
hamlsy commented 8 months ago

문제사항

memberApi 를 통해 로그인 시 인증 문제가 발생합니다.

check list

~memberApi 로그인 문제 해결~

detail

w.a.UsernamePasswordAuthenticationFilter : An internal error occurred while trying to authenticate the user.

org.springframework.security.authentication.InternalAuthenticationServiceException: No result found for query [select m from Member m where m.userId = :userId]

UsernamePasswordAuthenticationFilter 에서 회원가입한 멤버를 인식 못하는 문제가 일어났습니다. SecurityConfig 설정에 문제가 있을 것으로 예상됩니다.

시도할만한 것?

  1. Security Config 멀티 로그인 설정

구조 변경

Api 개발과 MVC개발을 분리 진행합니다.

Api와 일반 로그인 세션의 멀티 Security Config 구현에 어려움이 생겼습니다. 다른 추가 기능에 집중하기 위해 프로젝트 구조를 변경합니다.

문제 내용

Api와 일반 Controller 두 링크에 각각 SecurityConfig 을 적용하려다 생긴 문제입니다. 각각의 설정을 세팅하고 Component화 시켜 구현하기 위해 @ Order 어노테이션으로 SecurityConfig의 적용 순서를 결정했습니다. 그러나 우선적으로 적용된 Config의 url 이외의 요청에는 작동하지 않아 Api와 일반 Controller의 인증을 동시에 적용 시킬 수 없었습니다.

또한 RestApi 의 세션 인증 기반 세팅의 어려움에 직면해 시간을 많이 사용하게 되었습니다. 결론적으로 세션 인증 구현을 성공하진 못했지만, 프로젝트의 본 목적인 CRUD의 기능과 리팩토링, 동시성 구현에 초점을 맞추고자 Api 기능을 분리하는 결정을 내렸습니다. RestApi 개발은 다른 프로젝트에서 진행할 계획입니다.

변경 사항

delete: Api controller

hamlsy commented 8 months ago

title

게시글 삭제 기능을 구현합니다.

check list

  • [x] 게시글 삭제 버튼
  • [x] 삭제 안내 메시지 구현
  • [ ] ~게시글 삭제 api 구현~
  • [x] 삭제 시 게시글 번호 업데이트

detail

  1. 삭제 버튼을 글 작성자에게만 보이도록 구현합니다.
  2. 버튼을 클릭할 시 안내 메시지가 나오고, 확인 버튼을 누르면 게시글을 삭제합니다.
  3. 글 작성자가 아닌 회원이 삭제 api를 요청하면 Exception을 표시합니다.
  4. 게시글이 삭제되면 번호(순서)를 업데이트하여 표시합니다.

변경 사항: 게시글 삭제 버튼

https://github.com/hamlsy/forum-springBoot/blob/dd53e365e4b07d025b6c82874192709a97f2a5ac/src/main/resources/templates/post_detail.html#L32-L39

authentication으로 현재 인증된 회원과 글 작성자 아이디를 비교합니다. 동일하면 삭제 버튼을 보여줍니다.

hamlsy commented 8 months ago

title

게시글 삭제 기능을 구현합니다.

check list

  • [x] 게시글 삭제 버튼
  • [x] 삭제 안내 메시지 구현
  • [ ] ~게시글 삭제 api 구현~
  • [x] 삭제 시 게시글 번호 업데이트

detail

  1. 삭제 버튼을 글 작성자에게만 보이도록 구현합니다.
  2. 버튼을 클릭할 시 안내 메시지가 나오고, 확인 버튼을 누르면 게시글을 삭제합니다.
  3. 글 작성자가 아닌 회원이 삭제 api를 요청하면 Exception을 표시합니다.
  4. 게시글이 삭제되면 번호(순서)를 업데이트하여 표시합니다.

변경 사항: 삭제 안내 메시지 구현

https://github.com/hamlsy/forum-springBoot/blob/dd53e365e4b07d025b6c82874192709a97f2a5ac/src/main/resources/templates/post_detail.html#L80-L89

스크립트를 통해 삭제 버튼 클릭시 안내 메시지 이벤트를 구현했습니다.

hamlsy commented 8 months ago

title

게시글 삭제 기능을 구현합니다.

check list

  • [x] 게시글 삭제 버튼
  • [x] 삭제 안내 메시지 구현
  • [ ] ~게시글 삭제 api 구현~
  • [x] 삭제 시 게시글 번호 업데이트

detail

  1. 삭제 버튼을 글 작성자에게만 보이도록 구현합니다.
  2. 버튼을 클릭할 시 안내 메시지가 나오고, 확인 버튼을 누르면 게시글을 삭제합니다.
  3. 글 작성자가 아닌 회원이 삭제 api를 요청하면 Exception을 표시합니다.
  4. 게시글이 삭제되면 번호(순서)를 업데이트하여 표시합니다.

변경 사항: 삭제 시 게시글 번호 업데이트

변경 내용