Skip to content

Comments

[이소연] spring9#309

Open
isylsy166 wants to merge 6 commits intocodeit-bootcamp-spring:이소연from
isylsy166:sprint-mission-9
Open

[이소연] spring9#309
isylsy166 wants to merge 6 commits intocodeit-bootcamp-spring:이소연from
isylsy166:sprint-mission-9

Conversation

@isylsy166
Copy link
Collaborator

@isylsy166 isylsy166 commented Nov 20, 2025

요구사항

Spring Security 설정

  • Spring Security 의존성 추가
  • com.sprint.mission.discodeit.config 패키지에 SecurityConfig 클래스 생성
  • SecurityFilterChain Bean 선언
  • 기본 SecurityFilterChain 등록 후 필터 목록 디버깅 (PR에 첨부)
  • 개발 환경에서 Spring Security 로깅 레벨을 trace로 설정

CSRF 설정

  • CsrfTokenRepository를 CookieCsrfTokenRepository.withHttpOnlyFalse()로 설정
  • CsrfTokenRequestHandler를 SpaCsrfTokenRequestHandler로 교체
  • CSRF 토큰 발급 API 구현
    • GET /api/auth/csrf-token
    • 응답: 203 Void
  • CsrfToken 파라미터 주입 및 토큰 초기화 확인

회원가입 & 비밀번호 암호화

  • 회원가입 API 유지 (POST /api/users)
  • 비밀번호는 BCryptPasswordEncoder 로 해시 저장

로그인 설정

  • formLogin(Customizer.withDefaults()) 활성화 및 필터 확인
  • 로그인 처리 URL → /api/auth/login
  • UserDetailsService 대체 (DiscodeitUserDetailsService)
  • UserDetails 대체 (DiscodeitUserDetails)
  • AuthenticationSuccessHandler 대체 (LoginSuccessHandler)
  • AuthenticationFailureHandler 대체 (LoginFailureHandler)
  • 기존 로그인 관련 코드 제거
    • AuthApi.login
    • AuthController.login
    • AuthService.login
    • LoginRequest

인증 정보 확인 API

  • 세션 ID를 통해 사용자 기본 정보 조회
    • GET /api/auth/me
    • 응답: 200 UserDto
    • @AuthenticationPrincipal 활용

로그아웃 설정

  • 로그아웃 URL → /api/auth/logout
  • LogoutSuccessHandler를 HttpStatusReturningLogoutSuccessHandler로 대체 (응답: 204 Void)

권한(Role) 관리

  • 권한 정의
    • ADMIN / CHANNEL_MANAGER / USER
  • DB 스키마 변경
  • 회원가입 시 기본 권한: USER
  • 사용자 권한 수정 API 구현 (PUT /api/auth/role)
  • 애플리케이션 시작 시 ADMIN 계정 자동 생성 (없을 경우에만)
  • DiscodeitUserDetails.getAuthorities 수정

인가(Authorization) 설정

  • authorizeHttpRequests 활성화
    • 기본: 모든 요청 인증
  • 다음 요청은 permitAll()
    • CSRF 토큰 발급
    • 회원가입
    • 로그인 / 로그아웃
    • Swagger, Actuator 등 비-API 요청
    • @EnableMethodSecurity 활성화
  • 메소드 권한 제어
    • 퍼블릭 채널 생성/수정/삭제 → CHANNEL_MANAGER
    • 사용자 권한 수정 → ADMIN
  • 권한 부족 시 403 반환 (accessDeniedHandler 설정)
  • RoleHierarchy Bean 설정
    • ADMIN > CHANNEL_MANAGER > USER

심화

  • 심화 항목 1
  • 심화 항목 2

주요 변경사항

스크린샷

image

멘토에게

  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant