Chaeyeon0 / GreenDay_Study

여은개의 공부 일지
0 stars 0 forks source link

[20240529] 중간발표 기능 합침과 함께 생긴 의문과 의문들 ... #35

Open Chaeyeon0 opened 1 month ago

Chaeyeon0 commented 1 month ago

여태 있었던 이슈

  1. 메인 브랜치에 프로젝트 파일 잘못 머지 -> 해결 완 (혜원 최고)
  2. 해결 후 다음날 백엔드 둘 다 인텔리제이 안 열리는 이슈 발생 -> 풀 해서 가져온 프로젝트 오류 남 -> 재머지 후 풀 해서 해결 (혜원 최고)

일단 이거에 인증, 권한에 대해 질문하고 받은 대답들은

  1. 로그인 성공시 백엔드에서 네이버에서 발급받은 토큰을 이용해서 서버전용 토큰을 발행한다음 프론트에 전달해주면 프론트에서 이제 이토큰을 저장해두었다가 get이나 post api호출 할때마다 주소에 이토큰을 포함시켜서 전달하고 백은 이제 받은 주소에서 토큰을 추출하여서 토큰유효성검사하고 토큰이 유효한경우에만 reponse ...... (이해 못 함)

  2. SecurityConfig에서 알아서 걸려서 permit 안해놓으면 로그인 안하면 못쓰는걸로 될 것임 -> 포스트맨 가서 테스트 해봐 403 fobidden 뜰거임

현재 SecurityConfig에 "/write_diary"에 대해 .requestMatchers("/write_diary").authenticated()코드를 넣진 않음 (인가를 안 했다는 뜻) postman으로 해본 결과

login_id에 이상한 값 넣었을 때 -> ㅇㅇ 당연히 외래키로 가져오는거니 안 담기는게 당연함,,, 403 안 뜨는데요 ,,,, 스크린샷 2024-05-29 173756 외래키로 가져온 값 넣으면 잘 됨 스크린샷 2024-05-29 173818

그럼 인가 했을 때 login_id에 이상한 값 넣으면 어떻게 될까? 인가해보고 postman을 돌려보니

스크린샷 2024-05-29 174155

메시지가 다르게 뜨고 DB에 담기지 않아요 레파지토리에 시큐리티 접근 권한 보안 관련 자동 구성이 제외되어 있으며, 애플리케이션 실행 시에 Spring Security가 적용되지 않는다고해서 ..?

애플리케이션 파일 코드에

package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;

@SpringBootApplication(/*exclude = SecurityAutoConfiguration.class*/)
public class GreenDayApplication {
    public static void main(String[] args) {
    SpringApplication.run(GreenDayApplication.class, args);
    }

}

이렇게 주석 처리를 해봤으니 해결이 안됐습니다 .... 좀 더 알아보고 해결해보도록 할게요

Postman을 사용하여 /write_diary 엔드포인트에 요청을 보낼 때 DB에 값이 저장되지 않는 문제는 여러 가지 원인이 있을 수 있습니다. 이를 해결하기 위해서는 다음 단계를 따를 수 있습니다:

  1. 로그인 및 인증 토큰 확인:

/write_diary 엔드포인트가 인증된 사용자만 접근할 수 있도록 설정되어 있으므로, Postman에서 요청을 보내기 전에 인증 토큰을 받아야 합니다. 로그인을 통해 인증 토큰을 받고, 해당 토큰을 헤더에 포함시켜 요청을 보내야 합니다. Service와 Controller의 로직 확인:

  1. Diarycontroller와 Diaryservice 클래스의 로직을 확인하여 요청이 제대로 처리되고 있는지 확인합니다. 로그 추가:

로깅을 추가하여 요청이 제대로 들어오는지, 서비스 메서드가 호출되는지, DB에 데이터가 저장되는지 확인합니다. 다음은 각 단계에 대한 구체적인 설명입니다.