본문 바로가기
728x90

TIL61

[231117] HTTP 요청 ~ 응답의 과정 (Feat. todoapp) 웹에서의 클라이언트와 서버 간의 요청과 응답 사이의 과정에 대해 잘 정리되어 있지 않다보니 Spring security도 잘 이해가 되지 않는 것 같아 한번 정리해보려고 한다. HTTP의 동작 과정 서버 접속 클라이언트 요청 서버 응답 연결 종료 1. 서버 접속 1-1. 사용자가 웹 브라우저에 URL 주소를 입력 URL: 클라이언트가 서버를 지칭할 때 사용되는 주소 프로토콜, 연결하고자 하는 서버의 호스트 이름, 서버 내부의 파일 경로명으로 표현 1-2. DNS 서버에 웹 서버의 호스트이름을 IP 주소로 변경 요청 DNS(Domain Name System): 주소와 이름 정보를 자동으로 유지하고 관리하는 분산 데이터베이스 시스템 Domain name(호스트 이름) IP 주소 변환 기능 수행 호스트 주소와.. 2023. 11. 17.
[231116] Spring 숙련주차 개인과제 Spring 숙련주차 개인과제 "회원가입, 로그인 기능이 있는 투두앱 백엔드 서버 만들기" 요구사항 회원 가입 API username, password를 Client에서 전달받기 username은 최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)로 구성되어야 한다. password는 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성되어야 한다. DB에 중복된 username이 없다면 회원을 저장하고 Client 로 성공했다는 메시지, 상태코드 반환하기 로그인 API username, password를 Client에서 전달받기 DB에서 username을 사용하여 저장된 회원의 유무를 확인하고 있다면 password 비교하기 로그인 성공 시, .. 2023. 11. 16.
[231116] Access Token과 Refresh Token Access Token의 문제점 제 3자에게 탈취당할 경우 보안에 취약 발급된 이후 서버에 저장되지 않고 토큰 자체로 검증하여 사용자 권한을 인증하기 때문에 탈취된 경우 토큰이 만료되기 전까지 토큰을 획득한 사람은 누구나 권한 접근이 가능해짐 JWT는 발급 후 삭제가 불가능하기 때문에 토큰에 유효기간을 부여하는 식으로 탈취 문제에 대응 유효기간이 짧으면 토큰 남용을 방지할 수 있지만 그만큼 사용자는 로그인을 자주해서 토큰을 발급받아야 함 Refresh Token 형태는 Access Token과 같은 JWT이거나 혹은 간단한 문자열 또는 UUID일 수 있음 Access Token은 접근에 관여하는 토큰이고 Refresh Token은 재발급에 관여하는 토큰 로그인 성공했을 때 서버는 Access Token과.. 2023. 11. 16.
[231115] HttpMediaTypeNotAcceptableException 에러 해결 Spring 숙련주차 개인과제를 하던 중 로그인, 회원가입, 할일카드 기능을 만든 후에 댓글 관련 기능(댓글 생성 기능)을 개발하기 시작하면서 에러를 마주하게 되었다. 이전에 만들었던 할일카드 생성 코드와 거의 비슷하게 작성하였는데 왜 에러가 발생하는지 의문이 들었다. 위의 콘솔에서 보이는 에러를 구글링해봤을 때에는 나의 상황과 맞지 않아서 해결하기 아려웠다. 일단 request로 보낸 댓글은 댓글 데이터베이스에 저장이 된 것을 확인했고 디버깅했을 때도 컨트롤러에서 리턴까지는 잘 되다가 그 이후에 문제가 발생한 듯이 보였다. 따라서 리턴 이후 과정을 하나하나 따라가면서 디버깅해보다가 HttpMediaTypeNotAcceptableException 를 마주하게 되었다. 그리고 해당 에러로 검색을 해보니 드.. 2023. 11. 15.
[231113] Spring 입문 개인과제 해설 모범답안 깃허브 링크: https://github.com/camp-robbie/board-app GitHub - camp-robbie/board-app: NB Camp Task Level1: Board APP NB Camp Task Level1: Board APP. Contribute to camp-robbie/board-app development by creating an account on GitHub. github.com 게시글 삭제 기능 - 비밀번호를 header에 담기 개인과제를 할 때 DELETE 메소드의 body에 내용을 담는 것은 지양한다는 말을 듣고 비밀번호를 어떻게 보내야하나 고민하다가 PUT 메소드를 사용했는데 http 헤더에 담는 방법이 있었고, 이에 대해 알게 되었다. @Requ.. 2023. 11. 13.
[231109] Java 배열과 ArrayList 알고리즘 문제 풀기 https://jinjinjincode.tistory.com/214 [프로그래머스] 숫자의 표현(Java) https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 jinjinjincode.tistory.com 위의 문제를 풀면서 자바의 자료구조에 대해 좀 더 이해할 필요성을 느꼈기에 한 번 정리해보려고 한다. 배열 (Array) 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 정해진 크기의 메모리를 할당받아 사용 저장 공간이 연속적 식별자(인덱스)가 존재 String 배열이라면? 배열.. 2023. 11. 9.