[Spring Boot + React] AccessToken, RefreshToken 저장 방법 (http-only, Redis), JWT 로그인 처리
·
Back-end/Spring
JWT 토큰 인증 플로우https://claude.ai/public/artifacts/84c8a678-ecee-4efb-bb8d-c7ddb717de72 참고한 블로그https://securityinit.tistory.com/248 로그인 유지 및 jwt 토큰 갱신 (feat. accessToken, refreshToken, react, nestjs, springboot)이번 글에선 refreshToken을 통해 만료된 accessToken을 재발급 받고 사용자의 로그인 상태를 유지하는 방법을 알아보자.프론트엔드 코드는 ReactJS를 사용할 예정이고, 백엔드는 SpringBoot , NestJS를 사용securityinit.tistory.com accessToken사용자를 검증하기 위해 사용하는 토큰으로..
[Algorithm] 백준_녹색 옷 입은 애가 젤다지?_4485번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/4485문제젤다의 전설 게임에서 화폐의 단위는 루피(rupee)다. 그런데 간혹 '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다!젤다의 전설 시리즈의 주인공, 링크는 지금 도둑루피만 가득한 N x N 크기의 동굴의 제일 왼쪽 위에 있다. [0][0]번 칸이기도 하다. 왜 이런 곳에 들어왔냐고 묻는다면 밖에서 사람들이 자꾸 "젤다의 전설에 나오는 녹색 애가 젤다지?"라고 물어봤기 때문이다. 링크가 녹색 옷을 입은 주인공이고 젤다는 그냥 잡혀있는 공주인데, 게임 타이틀에 젤다가 나와있다고 자꾸 사람들이 이렇게 착각하니까 정신병에 걸릴 위기에 놓인 것이다.하여튼 젤다...아니 링크는 이 동굴의 반..
[Algorithm] 백준_4와 7_2877번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/2877문제창영이는 4와 7로 이루어진 수를 좋아한다. 창영이가 좋아하는 수 중에 K번째 작은 수를 구해 출력하는 프로그램을 작성하시오.입력첫째 줄에 K(1 ≤ K ≤ 109)가 주어진다.출력첫째 줄에 창영이가 좋아하는 숫자 중 K번째 작은 수를 출력한다.💡풀이문제 유형수학 구현 걸린 시간20분 (풀이 참고) 시간 복잡도O(logK + K) 풀이 방법 도출4 7 44 77 74 77.. 규칙을 따라가다 보면 0과 1, 2진수로 나타내는 것과 비슷하다.K+1을 2진수 스트링으로 변환 후1(은 무시, K에 1을 더해주어야 규칙에 맞음) 10 11 100 101 110 111.... 에서 맨 앞자리만 제거 후 0은 4, 1은 7로 변환하여 정답..
Spring Boot + Spring security + React CORS 해결 방법
·
Back-end/Spring
CORS란?브라우저가 출처가 다른 서버로 요청을 보낼 때, 그 요청을 허용할지 말지를 판단하는 기준 출처란?아래의 3가지 조합을 말한다.프로토콜 (http, https)호스트 (도메인 또는 IP)포트 번호# 예시http://localhost:3000 ← React 개발 서버http://localhost:8080 ← Spring Boot 백엔드 서버두 출처가 다르기 때문에 브라우저는 보안 상 직접 요청을 허용하지 않고, React에서 Spring Boot api로 요청을 보낼 때 CORS 정책 위반이 발생하게된다. 기존 CORS 문제를 해결하기 위해front 쪽에 package.json 파일에 아래와 같이 프록시 설정을 추가해줬었다."proxy": "http://localhost:8080",..
[Algorithm] 프로그래머스_땅따먹기 (JAVA)
·
Algorithm
📝문제https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다.예를 들면,| 1 | 2 | 3 | 5 || 5 | 6 | 7 | 8 || 4 | 3 | 2 | 1 |로 땅이 주..
할 때마다 헷갈리고 어려운 Spring Security 로그인
·
Back-end/Spring
(미래의 나를 위해 정리하는 글..) 도대체! 시큐리티가 아이디랑 비번 검증을 어떻게 하고있는 지 궁금해졌다.Spring Security의 동작을 코드로 찬찬히 따라가보자 우선, UsernamePasswordAuthenticationFilter부터 이해해보자. 이 필터는 Spring Security에서 폼 기반 로그인을 처리하는 기본 필터로,기본적으로 "/login" URL로 POST 요청이 오면 자동으로 실행이 된다. 내부 동작 과정을 요약하면 다음과 같다. 요청 매칭: 설정된 URL(기본 /login)과 요청 URL이 매칭되는지 확인파라미터 추출: 요청에서 username, password 추출 (기본적으로는 폼 파라미터)토큰 생성: UsernamePasswordAuthenticationToken ..
[Algorithm] 백준_수 이어 쓰기_1515번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/1515문제세준이는 1부터 N까지 모든 수를 차례대로 공백없이 한 줄에 다 썼다. 그리고 나서, 세준이가 저녁을 먹으러 나간 사이에 다솜이는 세준이가 쓴 수에서 마음에 드는 몇 개의 숫자를 지웠다.세준이는 저녁을 먹으러 갔다 와서, 자기가 쓴 수의 일부가 지워져있는 모습을 보고 충격받았다.세준이는 수를 방금 전과 똑같이 쓰려고 한다. 하지만, N이 기억이 나지 않는다.남은 수를 이어 붙인 수가 주어질 때, N의 최솟값을 구하는 프로그램을 작성하시오. 아무것도 지우지 않을 수도 있다.)입력첫째 줄에 지우고 남은 수를 한 줄로 이어 붙인 수가 주어진다. 이 수는 최대 3,000자리다.출력가능한 N 중에 최솟값을 출력한다.💡풀이문제 유형구현 그..
[Algorithm] 백준_톱니바퀴_14891번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/14891문제총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, 그 오른쪽은 3번, 가장 오른쪽 톱니바퀴는 4번이다.이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다.톱니바퀴를 회전시키려면, 회전시킬 톱니바퀴와 회전시킬 방향을 결정해야 한다. 톱니바퀴가 회전할 때, 서로 맞닿은 극에 따라서 옆에 있는 톱니바퀴를 회전시킬 수도 있고, 회전시키지 않을 수도 있다. 톱니..
[Algorithm] 백준_인구 이동_16234번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/16234문제N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다.오늘부터 인구 이동이 시작되는 날이다.인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다.국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다.위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다.국경선이 열려있어 인접한..
[Algorithm] 백준_빗물_14719번 (JAVA)
·
Algorithm
📝문제https://www.acmicpc.net/problem/14719문제2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다.비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까?입력첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500)두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다.따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다.출력2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라.빗물이 전혀 고이지 않을 경우 0을 출력하여라.💡풀이문제 유형구현 시뮬레이션 걸린 ..