본문 바로가기

Programming13

JWT 인증의 구조와, 내가 빠졌던 함정 JWT 인증의 구조와, 내가 빠졌던 함정을 실제 "멀쩡히 쓰다 갑자기 로그아웃되는" 버그를 겪으며 이해한 대로 정리한 글입니다. JWT는 어떻게 로그인을 기억하는가 전통적인 세션 방식은 서버가 "누가 로그인했는지"를 직접 기억합니다. 로그인하면 서버 메모리나 저장소에 세션을 남기고, 브라우저에는 그 세션을 가리키는 열쇠만 쥐여 주죠. 반면 JWT는 접근을 뒤집습니다. 서버가 아무것도 기억하지 않는 대신, "이 사람은 누구이고 무엇을 할 수 있다"는 정보를 토큰 자체에 적어 클라이언트에게 통째로 건네줍니다. 요청이 올 때마다 서버는 그 토큰이 위조되지 않았는지만 검증하면 되죠. 이 토큰은 점 두 개로 나뉜 세 조각으로 되어 있습니다.헤더(header) — 어떤 알고리즘으로 서명했는지 같은 메타 정보가 들어.. 2026. 7. 4.
[웹/인터넷] 서버에서 URL을 호출하면 에러 페이지(error page)가 나올 때 내 웹 서비스 페이지가 에러나는 경우(X) 웹 서비스에서 외부 URL을 호출할 때 에러나는 경우(O) 처리 방법 웹 서비스를 개발하다가 외부 URL(기사, 블로그 등)을 입력해 활용하는 기능을 추가하려는데, 페이지를 직접 접속하면 잘 열리지만, 서비스에 URL을 넣고 호출하면 error code가 나오면서 의도한 기능이 수행되지 않는 경우가 생긴다. 이 때는 직접 에러 페이지(403, 404, 500, 503 등)을 접속해서 확인할 수가 없으니, 해당 페이지의 예외처리를 따로 해줄 필요가 있다. 다만, 이 예시에서는 실제로 접속해서 에러를 확인할 수 있는 페이지를 다뤄보도록 한다. 이렇게 에러 페이지가 나오는 경우, html코드로 판단해 처리할 수 있다. F12를 눌러 개발자 도구를 열면, > 에 "40.. 2023. 8. 30.
파이썬 알고리즘 - 근삿값, 재귀, 병합정렬, 퀵 정렬 제로베이스 데이터 취업 스쿨 과정 학습 내용을 정리한 포스팅입니다. 📍 근삿값 특정 값과 가장 근사한 값을 배열에서 찾기 inputNum = 17 minNum = 30 num = [25, 15, 20, 10, 30] for n in nums: absNum = abs(n-inputNum) if absNum 0: return num * f.. 2023. 6. 1.
파이썬 알고리즘 - 이진탐색, 버블정렬, 삽입정렬, 선택정렬 제로베이스 데이터 취업 스쿨 과정 학습 내용을 정리한 포스팅입니다. 📍 이진탐색 정렬되어 있는 자료구조에서 중앙값과의 크고 작음을 이용해서 데이터를 검색한다. nums = [4, 10, 22, 5, 0, 17, 7, 11, 9, 61, 88] nums.sort() searchData = 17 result_idx = -1 start_idx = 0 end_idx = len(nums) - 1 mid_idx = (start_idx + end_idx) // 2 mid_value = nums[mid_idx] while True: if searchData == nums[len(nums) -1]: result_idx = len(nums) - 1 break if searchData > mid_value: start_id.. 2023. 5. 29.
파이썬 자료구조 - 딕셔너리(dictionary) 제로베이스 데이터 취업 스쿨 과정 학습 내용을 정리한 포스팅입니다. 📍 딕셔너리(dictionary) 키(key)와 값(value)을 짝지어 자료를 관리 삭제, 수정 등은 리스트와 같이 활용 가능 students = {'s1':'홍길동', 's2':'강호동', 's3':'이수근', 's4':'김영철'} students = {'s1':'홍길동', 's2':'강호동', 's3':'이수근', 's4':'김영철'} students['s2'] # 강호동 students.get('s2') # 강호동 - dict[key] 로 값(value)를 조회할 수 있다. 다만, 해당 키값이 없을 경우 에러가 발생 - dict.get(key)로 값을 조회하면 키 값이 없어도 에러가 나지 않고 None을 반환한다. students.. 2023. 5. 25.
파이썬 자료구조 - 리스트(list), 튜플(tuple) 제로베이스 데이터 취업 스쿨 과정 학습 내용을 정리한 포스팅입니다. 📍 리스트(list) 배열과 같이 여러 개의 데이터를 나열한 자료구조 students = ['홍길동', '박찬호', '이용규', '박승철', '김지은'] numbers = [10, 20, 30, 40, 50] data = [10, 20, 30, [40, 50, 60]] # 리스트 안의 리스트도 가능 - 문자, 숫자 뿐만 아니라 data와 같이 리스트 안의 리스트도 가능하다. students[0] # 홍길동 students[1] # 박찬호 - 리스트 아이템 조회하는 방법 students[i] len(students) # 5 - len() 함수로 길이(length)를 반환 가능 students = ['홍길동', '박찬호', '이용규', '박.. 2023. 5. 25.