https://ewok.tistory.com/410 org.springframework.beans.factory.UnsatisfiedDependencyException 토큰 유효성을 검사하는 테스트를 진행 중 에러가 발생해서 Application을 실행시켜보았더니 아래와 같은 에러가 발생했다. 처음 이미지의 에러를 살펴보니 아래와 같은 메시지가 있었다. JdbcSQLSynt ewok.tistory.com https://ewok.tistory.com/415 status":415,"error":"Unsupported Media Type 서머노트에 작성한 내용을 컨트롤러로 가져오는 과정에서 에러가 발생했다. {"readyState":4,"responseText":"{\"timestamp\":\"2023-03-..
댓글 삭제 기능을 구현하는 부분이 나에게 살짝 복잡했어서 별도로 기록으로 남긴다. 댓글 삭제는 대댓글이 있는 댓글을 삭제할 경우 DB에서 삭제하는 것이 아니라 삭제여부 컬럼에 삭제되었다는 표시(N -> Y)로 변경하고 화면에는 '삭제된 댓글입니다.'라고 표시하고자 했다. 그리고 대댓글이 없는 댓글과 댓글을 바로 삭제되도록 하고 싶었고, 삭제된 댓글이라고 표시한 댓글의 경우 대댓글이 전부 삭제되면 db에서도 삭제되도록 구현하고 싶었다. 처음에는 그냥 구현하였더니 원하는대로 작동되지 않았다. 그래서 흐름을 도식화한 뒤 구현하였다. /** 댓글 삭제 */ public Long updateRemoveY(Long replyId) { Reply reply = replyRepository.findById(replyI..
Ajax를 통해 서버로 통신을 시도해도 계속 403에러가 발생하였다. 이 경우 Spring Security를 사용한다면 csfr 보호 기능이 활성화 되어있는지 확인해보자 Spring Security를 사용한다면 보통 csrf 보호기능이 활성화 되어 있는데, 이러면 Ajax로 통신을 할 수가 없었다. CSFR(Cross-Site Request Forgery) - 사이트 간 요청 위조 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격 일단은 SecurityConfig에서 @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.headers().frameOptions..
트위치 API로 채널 검색 결과를 받아오려고 하는데 제대로 작동이 되지 않았다. public List getChannelSearchResult(String streamer) { String accessToken = getAccessToken(); if (!isAccessTokenValid(accessToken)) { accessToken = reGetAccessToken(); } HttpHeaders headers = new HttpHeaders(); headers.setBearerAuth(accessToken); headers.set("Client-Id", clientId); HttpEntity httpEntity = new HttpEntity(headers); UriComponentsBuilder b..
도메인 구매 및 EC2와 연결 트위치 OAuth 로그인 사용 시 리디렉션 URL은 https 프로토콜을 사용해야 한다. 우선 도메인을 구매하자 카페24, 가비아, freenom 등에서 구매할 수 있는데 가비아에서 한번 해보겠다. https://domain.gabia.com/ 가비아: 대한민국 도메인 점유율 1위 대한민국 100만 도메인 등록 업체 domain.gabia.com 사용하려는 도메인을 입력한다. 사용가능한 도메인 목록이 나오는데 원하는 것을 선택하고 신청한다. 네임서버는 AWS를 이용 중이니 타사 네임서버 사용을 선택한다. 네임서버 정보를 입력하기 위해 AWS의 Route 53으로 이동한다. 호스팅 영역을 생성한다. 가비아에서 구매하려는 도메인 이름을 입력한 뒤 호스팅 영역을 생성한다. 생성된..