-
Notifications
You must be signed in to change notification settings - Fork 16
[강은혁] Sprint9 #130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Eunhye0k
wants to merge
27
commits into
codeit-bootcamp-spring:강은혁
Choose a base branch
from
Eunhye0k:sprint9
base: 강은혁
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
[강은혁] Sprint9 #130
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Conflicts: # .gitignore # build.gradle # gradle/wrapper/gradle-wrapper.jar # gradle/wrapper/gradle-wrapper.properties # gradlew # gradlew.bat # settings.gradle # src/main/java/com/sprint/mission/discodeit/entity/Channel.java # src/main/java/com/sprint/mission/discodeit/entity/Message.java # src/main/java/com/sprint/mission/discodeit/entity/User.java # src/main/java/com/sprint/mission/discodeit/repository/ChannelRepository.java # src/main/java/com/sprint/mission/discodeit/repository/MessageRepository.java # src/main/java/com/sprint/mission/discodeit/repository/UserRepository.java # src/main/java/com/sprint/mission/discodeit/service/ChannelService.java # src/main/java/com/sprint/mission/discodeit/service/MessageService.java # src/main/java/com/sprint/mission/discodeit/service/UserService.java
# Conflicts: # build.gradle # src/main/java/com/sprint/mission/discodeit/controller/AuthController.java # src/main/java/com/sprint/mission/discodeit/controller/BinaryContentController.java # src/main/java/com/sprint/mission/discodeit/controller/ChannelController.java # src/main/java/com/sprint/mission/discodeit/controller/MessageController.java # src/main/java/com/sprint/mission/discodeit/controller/ReadStatusController.java # src/main/java/com/sprint/mission/discodeit/controller/UserController.java # src/main/java/com/sprint/mission/discodeit/dto/request/BinaryContentCreateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/LoginRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/MessageCreateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/MessageUpdateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/PrivateChannelCreateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/PublicChannelCreateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/PublicChannelUpdateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/ReadStatusCreateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/ReadStatusUpdateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/UserCreateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/UserStatusCreateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/UserStatusUpdateRequest.java # src/main/java/com/sprint/mission/discodeit/dto/request/UserUpdateRequest.java # src/main/java/com/sprint/mission/discodeit/entity/User.java # src/main/java/com/sprint/mission/discodeit/entity/base/BaseEntity.java # src/main/java/com/sprint/mission/discodeit/exception/DiscodeitException.java # src/main/java/com/sprint/mission/discodeit/exception/ErrorCode.java # src/main/java/com/sprint/mission/discodeit/exception/ErrorResponse.java # src/main/java/com/sprint/mission/discodeit/exception/GlobalExceptionHandler.java # src/main/java/com/sprint/mission/discodeit/exception/channel/ChannelException.java # src/main/java/com/sprint/mission/discodeit/exception/channel/ChannelNotFoundException.java # src/main/java/com/sprint/mission/discodeit/exception/channel/PrivateChannelUpdateException.java # src/main/java/com/sprint/mission/discodeit/exception/message/MessageException.java # src/main/java/com/sprint/mission/discodeit/exception/message/MessageNotFoundException.java # src/main/java/com/sprint/mission/discodeit/exception/user/UserException.java # src/main/java/com/sprint/mission/discodeit/exception/user/UserNotFoundException.java # src/main/java/com/sprint/mission/discodeit/service/basic/BasicAuthService.java # src/main/java/com/sprint/mission/discodeit/service/basic/BasicBinaryContentService.java # src/main/java/com/sprint/mission/discodeit/service/basic/BasicChannelService.java # src/main/java/com/sprint/mission/discodeit/service/basic/BasicMessageService.java # src/main/java/com/sprint/mission/discodeit/service/basic/BasicReadStatusService.java # src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserService.java # src/main/java/com/sprint/mission/discodeit/service/basic/BasicUserStatusService.java # src/main/resources/application-dev.yaml # src/main/resources/application-prod.yaml # src/main/resources/application.yaml # src/main/resources/logback-spring.xml
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
요구사항
프로젝트 마일스톤
기본
Spring Security 환경설정
프로젝트에 Spring Security 의존성을 추가하세요.
Security 설정 클래스를 생성하세요.
SecurityFilterChain Bean을 선언하세요.
CSRF 보호 설정하기

디스코드잇은 CSR 방식이기 때문에 CSRF 토큰은 다음과 같이 처리합니다.
CsrfTokenRepository 구현체를 CookieCsrfTokenRepository로 설정하세요.
이때 클라이언트에서 쿠키에 저장된 CSRF 토큰에 접근해야 하므로 Http Only는 false로 설정합니다.
CsrfTokenRequestHandler 컴포넌트를 대체하세요.
회원가입
인증 - 로그인
각 컴포넌트의 기본 구현체가 무엇인지 디버깅해보세요.
로그인을 처리할 url을 /api/auth/login로 설정하세요.
디스코드잇 DB에서 자체 관리하는 사용자 정보로 UserDetails 객체를 생성합니다.
구현체를 Bean으로 등록하면 자동으로 대체됩니다.
UserDetails 컴포넌트를 대체하세요.
인증 정보(Principal)에 담을 수 있는 정보를 자유롭게 확장할 수 있습니다.
UserDto와 비밀번호 정보를 저장하세요.
AuthenticationSuccessHandler 컴포넌트를 대체하세요.
인증 성공 시 200 UserDto로 응답합니다.
설정에 추가하세요.
인증 실패 시 401 ErrorResponse로 응답합니다.
설정에 추가하세요.
인증 - 세션을 활용한 현재 사용자 정보 조회
인증 - 로그아웃
인가 - 권한 정의
관리자: ADMIN
채널 매니저: CHANNEL_MANAGER
일반 사용자: USER
데이터베이스 스키마를 변경하세요.
인가 - 권한 적용
Csrf Token 발급
회원가입
로그인
로그아웃
API가 아닌 요청(Swagger, Actuator 등)
Method Security를 활성화하세요.
Service의 메소드 별로 아래의 조건에 맞게 권한을 수정하세요.
적절한 권한이 없는 경우 403 응답을 반환하세요.
심화
세션 관리 고도화
세션의 동일성을 보장하기 위해 DiscodeitUserDetails의 equals(), hashcode() 메소드를 오버라이딩하세요.
권한이 변경된 사용자가 로그인 상태라면 세션을 무효화하세요.
로그인 고도화 - RememberMe
권한 적용 고도화
멘토에게