티스토리 뷰
728x90
반응형
1. 인증 기능 구현 2
(1) ArticlesService 수정
- Delete
- 게시글을 삭제할 때(deleteArticle 메서드), 작성한 사용자가 아니라면 삭제할 수 없도록 수정한다.
- articleId 외에 userId를 받아 articleRepository.deleteByIdAndUserAccount_UserId() 메서드를 통해 삭제하게 한다.
- 해당 메서드는 ArticleRepository에 생성하면 된다.
- Update
- 글을 작성한 사용자의 정보와 수정하려는 인증된 사용자 userAccount 사용자의 정보가 동일한지 비교하고, 같을 때 업데이트를 수행하도록 한다.
(2) ArticleController 수정
- Delete
- deleteArticle 메서드에서 userId 정보를 추가해준다.
- 하지만 여기서는 실제 인증 정보와 관련하여 userId를 가져와야 하기 때문에 어노테이션을 쓰면 간단히 정보를 불러올 수 있다.
- 이때 쓰이는 어노테이션은 @AuthenticationPrincipal 이다.
- @AuthenticationPrincipal 어노테이션이 쓰인 boardPrincipal로부터 인증 정보를 불러올 수 있게 된다.
- Update
- delete 메서드 때와 마찬가지로 @AuthenticationPrincipal 을 사용하여 인증 정보를 불러온다.
- 이를 통해 임의로 작성하여 입력해주던 사용자 정보를 boardPrincipal로 바꿀 수 있다.
- 인증 정보는 dto에 댐아 전달해주면 된다.
- PostNewArticle
- 해당 메서드도 마찬가지의 방법으로 사용자 인증 정보를 받아올 수 있다.
(3) 댓글 Service, Repository, Controller 수정
게시글에서 수정한 과정과 유사하게 ArticleComment에 대하여 인증 정보를 확인하여 저장, 수정, 삭제가 이루어질 수 있도록 한다.
- ArticleCommentRepository
- deleteByIdAndUserAccount_UserId 메서드를 추가한다.
- ArticleCommentService
- deleteArticleComment 메서드에서 userId를 활용해 deleteByIdAndUserAccount_UserId가 수행되도록 한다.
- ArticleCommentController
- @AuthenticationPrincipal BoardPrincipal 을 사용하여 username을 불러와 deleteArticleComment 메서드를 실행한다.
- 마찬가지로 postNewArticleComment 메서드가 실행될 때, 인증된 사용자 정보를 boardPrincipal 에서 불러온다.
(4) 뷰 구현
- 헤더에 로그인 로그아웃 버튼을 생성한다.
- xml 파일에서 sec 태그를 사용하여 보안을 설정해준다.
- 로그인 인증되었을 때만 사용자 이름이 나타날 수 있도록 한다.
- (참고, 비밀번호에는 PasswordEncoderFactories 의 메서드를 사용하였는데 이 기능 때문에 repository에 저장되는 비밀번호 앞에 특정 앞머리를 추가해 주어야 한다. {noop})
- 추가적으로 로그인이 안되었다면 글쓰기 버튼이 보이지 않고, 본인이 아니라면 추가 삭제 버튼도 보이지 않도록 설정한다.
- xml 파일에서 인증되었을 때만 버튼이 보이게 sec:authorize = “isAuthenticated()” 태그를 추가해주면 된다.
- 게시글 수정 삭제와 댓글 삭제할 때에는 권한 여부 뿐만 아니라 사용자 본인이 맞는지도 확인해야 한다.
th:if=”${#authorization.expression(‘isAuthenticated()’)} and *{userId} == ${#authentication.name}”
- ArticleWithCommentsResponse와 ArticleCommentResponse에 userId 정보가 없었음으로 추가해 준다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 2. 게시판 서비스 만들기 - 헤로쿠 배포 & 데모 (0) | 2023.09.16 |
---|---|
[Java Project] Part 2. 게시판 서비스 만들기 - 깃헙 릴리즈 및 헤로쿠 배포 (0) | 2023.09.15 |
[Java Project] Part 2. 게시판 서비스 만들기 - 인증 기능 구현 1 (0) | 2023.09.13 |
[Java Project] Part 2. 게시판 서비스 만들기 - 게시글 댓글 구현 (0) | 2023.09.12 |
[Java Project] Part 2. 게시판 서비스 만들기 - 해시태그 검색 구현 (0) | 2023.09.11 |
댓글