λ³Έ νλ‘μ νΈλ μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ APIλ₯Ό νμ©νμ¬ μ¬μ©μ μΈμ¦ λ° μΈκ°λ₯Ό μ²λ¦¬ν©λλ€.
-
μ¬μ©μκ° μΉ΄μΉ΄μ€ λ‘κ·ΈμΈμ μλνλ©΄, μλ²λ OAuth2User κ°μ²΄λ₯Ό ν΅ν΄ λ€μκ³Ό κ°μ μ¬μ©μ μ 보λ₯Ό λ°μ μ μ₯ν©λλ€.
- μ΄λ©μΌ
- λλ€μ
- μΉ΄μΉ΄μ€ ID
-
μΉ΄μΉ΄μ€λ‘λΆν° μΈμ¦ μ½λλ₯Ό λ°μ ν, μ΄λ₯Ό κΈ°λ°μΌλ‘ JWT ν ν°μ λ°κΈν©λλ€:
AccessTokenμ λΈλΌμ°μ μ μΏ ν€μ μ μ₯λ©λλ€.- XSS 곡격 λ°©μ§:
HttpOnlyμμ±μ μ μ©νμ¬ μλ°μ€ν¬λ¦½νΈλ₯Ό ν΅ν μ κ·Όμ μ°¨λ¨νκ³ λ³΄μμ±μ κ°νν©λλ€. - νΈμμ±: μΏ ν€λ λμΌ λλ©μΈ μμ² μ μλμΌλ‘ HTTP μμ²μ ν¬ν¨λλ―λ‘, νλ‘ νΈμλμμ ν ν°μ μ§μ ν€λμ μΆκ°ν νμκ° μμ΅λλ€.
- XSS 곡격 λ°©μ§:
RefreshTokenμ Redisμ μ μ₯λμ΄ μμ νκ² κ΄λ¦¬λ©λλ€.
-
μ¬μ©μκ° λ‘κ·Έμμν κ²½μ° λ€μκ³Ό κ°μ μ²λ¦¬κ° μ΄λ£¨μ΄μ§λλ€:
- μΏ ν€μ μ μ₯λ
AccessTokenμ μ¦μ λ§λ£μν΅λλ€. - ν΄λΉ
AccessTokenμ Redis λΈλ리μ€νΈμ λ±λ‘λμ΄ λ μ΄μ μ¬μ©ν μ μλλ‘ μ²λ¦¬ν©λλ€.
- μΏ ν€μ μ μ₯λ
μΉ΄μΉ΄μ€ κ³΅μ APIλ₯Ό μ¬μ©νμ¬ μ¬μ©μμ ννΈλκ° μ½κ² μ°λλ μ μλλ‘ μ§μν©λλ€.
-
μ¨λ³΄λ© κ³Όμ μμ μ¬μ©μλ ννΈλμ 곡μ ν μ μλ 컀μ€ν URLμ μμ±ν μ μμ΅λλ€.
-
ννΈλλ μ΄ URLμ ν΄λ¦ν΄ κ°νΈνκ² μ°λ μ μ°¨λ₯Ό μμνλ©°, μ°λμ΄ μλ£λλ©΄ λ μ¬μ©μλ κ°μ μΊλ¦°λλ₯Ό 곡μ νκ² λ©λλ€.
-
μ΄μ λ μ¬μ©μλ κ°μμ μν μ λ°λΌ λ€μκ³Ό κ°μ κΈ°λ‘μ ν¨κ» λ¨κΈ°κ³ μ΄μ€ νΌμμ μ€μ²ν μ μμ΅λλ€:
- νΌμμ½ λ³΅μ©
- κ°μ κΈ°λ‘
- κ΄κ³ μ¬λΆ
- μ½λ μ¬μ© μ¬λΆ
ννΈλμ μ¬μ©μκ° κ°μ μΊλ¦°λλ₯Ό 곡μ νμ¬ ν¨κ» κΈ°λ‘μ μμ±ν μ μμ΅λλ€.
-
μΉ΄μΉ΄μ€ κ³΅μ APIλ₯Ό ν΅ν΄ μ°κ²°λ μ¬μ©μμ ννΈλλ νλμ μΊλ¦°λμμ μλμ κ°μ κΈ°λ‘μ ν¨κ» μμ±ν©λλ€:
- νΌμμ½ λ³΅μ© κΈ°λ‘
- κ°μ κΈ°λ‘
- κ΄κ³ μ¬λΆ
- μ½λ μ¬μ© μ¬λΆ
-
μ¬μ©μμ
roleκ°(ROLE_USER,ROLE_PARTNER)μ λ°λΌ κΈ°λ‘ κ°λ₯ν νλͺ©κ³Ό μ κ·Ό κΆνμ΄ λ€λ¦ λλ€.- μ¬μ±(ROLE_USER): κ΄κ³ μ¬λΆ, νΌμμ½ λ³΅μ© μ¬λΆ, κ°μ κΈ°λ‘
- λ¨μ±(ROLE_PARTNER): κ΄κ³ μ¬λΆ, μ½λ μ¬μ© μ¬λΆ
μμ€ν λ° μ°λλ μ¬μ©μμμ μνΈμμ©μ μλ¦Ό μ€νμΌλ‘ μ 곡ν©λλ€.
-
SseEmitterλ₯Ό νμ©ν **SSE(Server-Sent Events)**λ₯Ό ν΅ν΄ μ€μκ° μλ¦Όμ μ μ‘ν©λλ€.
-
μ¬μ©μλ λ€μκ³Ό κ°μ μλ¦Όμ μ€μκ°μΌλ‘ λ°μ μ μμ΅λλ€:
- νΌμμ½ λ³΅μ© μλ¦Ό
- κ°μ κΈ°λ‘ μλ¦Ό
- μ½ κ΅¬λ§€ μλ¦Ό
- ννΈλ μ°λ μλ½ μλ¦Ό
| νλͺ© | λ°μ€μ | μμΉμ° |
|---|---|---|
| νλ‘ν | ![]() |
![]() |
| GitHub | @goodjunseon | @Lims |
βββ java
βΒ Β βββ com
βΒ Β βββ together
βΒ Β βββ backend
βΒ Β βββ ToGetHerApplication.java
βΒ Β βββ domain
βΒ Β βΒ Β βββ calendar
βΒ Β βΒ Β βΒ Β βββ controller
βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarController.java
βΒ Β βΒ Β βΒ Β βββ dto
βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarDetailResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarRecordRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarRecordResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ CalendarSummaryResponse.java
βΒ Β βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βΒ Β βΒ Β βββ entity
βΒ Β βΒ Β βΒ Β βΒ Β βββ BasicRecord.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ CondomUsage.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeRecord.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeType.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ MoodType.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ RelationRecord.java
βΒ Β βΒ Β βΒ Β βββ repository
βΒ Β βΒ Β βΒ Β βΒ Β βββ BasicRecordRepository.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeRecordRepository.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ RelationRecordRepository.java
βΒ Β βΒ Β βΒ Β βββ service
βΒ Β βΒ Β βΒ Β βββ CalendarService.java
βΒ Β βΒ Β βΒ Β βββ IntakeRecordInitService.java
βΒ Β βΒ Β βββ couple
βΒ Β βΒ Β βΒ Β βββ controller
βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleController.java
βΒ Β βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βΒ Β βΒ Β βββ entity
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ Couple.java
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleStatus.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ request
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ ConnectRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ response
βΒ Β βΒ Β βΒ Β βΒ Β βββ ConnectResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleResponse.java
βΒ Β βΒ Β βΒ Β βββ repository
βΒ Β βΒ Β βΒ Β βΒ Β βββ CoupleRepository.java
βΒ Β βΒ Β βΒ Β βββ service
βΒ Β βΒ Β βΒ Β βββ CoupleService.java
βΒ Β βΒ Β βββ notification
βΒ Β βΒ Β βΒ Β βββ controller
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSettingsController.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSseController.java
βΒ Β βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βΒ Β βΒ Β βββ Notification.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSettings.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationType.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ intake
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ request
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ response
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ notification
βΒ Β βΒ Β βΒ Β βΒ Β βββ request
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationDayRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationEnabledRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationTimeRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ response
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationDayResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationEnabledResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationTimeResponse.java
βΒ Β βΒ Β βΒ Β βββ repository
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationRepository.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ NotificationSettingsRepository.java
βΒ Β βΒ Β βΒ Β βββ service
βΒ Β βΒ Β βΒ Β βββ NotificationService.java
βΒ Β βΒ Β βΒ Β βββ NotificationSettingsService.java
βΒ Β βΒ Β βΒ Β βββ NotificationSseService.java
βΒ Β βΒ Β βββ pill
βΒ Β βΒ Β βΒ Β βββ controller
βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillController.java
βΒ Β βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeInfo.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeOption.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPill.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ request
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ response
βΒ Β βΒ Β βΒ Β βΒ Β βββ TodayPillResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillRemainResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillResponse.java
βΒ Β βΒ Β βΒ Β βββ repository
βΒ Β βΒ Β βΒ Β βΒ Β βββ IntakeInfoRepository.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ UserPillRepository.java
βΒ Β βΒ Β βΒ Β βββ service
βΒ Β βΒ Β βΒ Β βββ UserPillService.java
βΒ Β βΒ Β βββ sharing
βΒ Β βΒ Β βΒ Β βββ controller
βΒ Β βΒ Β βΒ Β βΒ Β βββ SharingController.java
βΒ Β βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βΒ Β βΒ Β βββ Sharing.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ request
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ ConfirmRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βΒ Β βββ SaveUrlRequest.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ response
βΒ Β βΒ Β βΒ Β βΒ Β βββ ConfirmResponse.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ SaveUrlResponse.java
βΒ Β βΒ Β βΒ Β βββ repository
βΒ Β βΒ Β βΒ Β βΒ Β βββ SharingRepository.java
βΒ Β βΒ Β βΒ Β βββ service
βΒ Β βΒ Β βΒ Β βββ SharingService.java
βΒ Β βΒ Β βββ user
βΒ Β βΒ Β βββ controller
βΒ Β βΒ Β βΒ Β βββ MainPageController.java
βΒ Β βΒ Β βΒ Β βββ UserAuthController.java
βΒ Β βΒ Β βΒ Β βββ UserController.java
βΒ Β βΒ Β βΒ Β βββ UserRedirectionController.java
βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βΒ Β βββ entity
βΒ Β βΒ Β βΒ Β βΒ Β βββ Role.java
βΒ Β βΒ Β βΒ Β βΒ Β βββ User.java
βΒ Β βΒ Β βΒ Β βββ request
βΒ Β βΒ Β βΒ Β βΒ Β βββ UserRequest.java
βΒ Β βΒ Β βΒ Β βββ response
βΒ Β βΒ Β βΒ Β βββ MyPageResponse.java
βΒ Β βΒ Β βΒ Β βββ UserResponse.java
βΒ Β βΒ Β βΒ Β βββ mainpageinfo
βΒ Β βΒ Β βΒ Β βββ PartnerInfoResponse.java
βΒ Β βΒ Β βΒ Β βββ PillInfoResponse.java
βΒ Β βΒ Β βΒ Β βββ UserInfoResponse.java
βΒ Β βΒ Β βββ repository
βΒ Β βΒ Β βΒ Β βββ UserRepository.java
βΒ Β βΒ Β βββ service
βΒ Β βΒ Β βββ MainPageService.java
βΒ Β βΒ Β βββ UserAuthService.java
βΒ Β βΒ Β βββ UserDeleteService.java
βΒ Β βΒ Β βββ UserProfileService.java
βΒ Β βββ global
βΒ Β βββ common
βΒ Β βΒ Β βββ BaseResponse.java
βΒ Β βΒ Β βββ BaseResponseStatus.java
βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βββ BaseEntity.java
βΒ Β βββ config
βΒ Β βΒ Β βββ CorsMvcConfig.java
βΒ Β βΒ Β βββ RedisConfig.java
βΒ Β βΒ Β βββ SecurityConfig.java
βΒ Β βββ security
βΒ Β βββ jwt
βΒ Β βΒ Β βββ JWTFilter.java
βΒ Β βΒ Β βββ model
βΒ Β βΒ Β βΒ Β βββ BlackListToken.java
βΒ Β βΒ Β βΒ Β βββ RefreshToken.java
βΒ Β βΒ Β βββ service
βΒ Β βΒ Β βΒ Β βββ BlackListTokenService.java
βΒ Β βΒ Β βΒ Β βββ JwtTokenService.java
βΒ Β βΒ Β βββ util
βΒ Β βΒ Β βββ CookieUtil.java
βΒ Β βΒ Β βββ JWTUtil.java
βΒ Β βββ oauth2
βΒ Β βββ CustomOAuth2UserService.java
βΒ Β βββ CustomSuccessHandler.java
βΒ Β βββ dto
βΒ Β βββ CustomOAuth2User.java
βΒ Β βββ KakaoResponse.java
βΒ Β βββ OAuth2Response.java
βΒ Β βββ UserDTO.java
βββ resources
βββ application-dev.yml
βββ application-prod.yml
βββ application.yml



