16일 전 · 민우 님의 새로운 답변
신입 백엔드 개발자 해외취업
안녕하세요~ 이번 2월에 졸업하고 백엔드로 취준하고 있는 26세 여자입니다 직군은 개발자 백엔드이고 한국 보다는 외국에서 취업을 하고 싶습니다(유럽이나 영어권) 현재 프로젝트는 2개 정도가 있고 docker, aws, s3, jwt, redis, spring boot 정도 기술이 됩니다. 코테는 계속 준비 중이구요 요즘 해외 취업 어떤지 알고 싶습니다. 꼭 한국에서 경력을 쌓고 가야할까요? 첫 직장을 외국에서 하고 싶어요ㅠㅠ
개발자
#해외취업
#해외
#백엔드
#신입
답변 1
댓글 0
조회 84
11일 전 · 익명 님의 새로운 댓글
제 수준이 어느정도인지 궁금합니다
잡코리아에 아래 글을 올렸었는데 “ 우선 대학고 졸업 예정(현 2학년) 입니다! 1인개발 스프링 경험이 있습니다 Jwt랑 Redis로 토큰 기반 로그인 Rest API 관리자, 로그인 페이지등 간단한 프론트엔드 Nginx 활용 certbot, Let`s Encrypt로 https해서 리눅스 서버에 올려서 운영까지 모두 1인 개발입니다 몽고디비도 연동했습니다 Sql injection이랑 CSRF 공격등 보안도 좀 신경 썼습니다! 졸업 후 월급 연봉쪽이 궁금합니다!! 자바는 5년정도 했습니다. + 방학마다 개발 스타트업에서 일하고 있습니다 “ 답변은 요렇게 달렸어요 “ 생노베 비전공 국비 졸업생도 수료 후 3-6개월 더 하면 하는 수준을 나열해주셨어요. 연봉 3천 중소 블랙 si 노려볼만 하겠습니다. “ 정말 노베 졸업생도 이정도 한다니.. 좀 많이 놀라운데 스프링 내부 설계나 이런거 기술 안한것도 많지만.. 정말 주변 대학생이나 누구보다 나름 잘한다 생각했는데 이게 현실인건가요 ㅠㅠㅠ 제 깃허브는 별볼일 없긴 합니다 https://github.com/Teynx
개발자
#백엔드-개발자
#스프링부트
#스프링
#백엔드
#취업
답변 2
댓글 4
조회 475
한 달 전 · 포크코딩 님의 새로운 답변
kakaotoken 과 JWTtoken
로그인 구동방식을 jwt token으로 사용하고 있는데(관리자페이지) 카카오 로그인을 추가하려니 동일하게 refresh Token으로 access token을 재발급받아 사용하는 방식이던데 이전에 react-kakao-login 라이브러리만 사용해서 직접적으로 하려니 이런 구동방식인지 이번에 알았네요 현재 refresh token을 http only 쿠키와 DB에 저장해서 클라이언트에서 refresh token을 가져와 전달해주면 백에서 DB와 대조하여 동일한지 검증을 한번 더 해주고 있습니다. 그렇다면 DB에 kakaoRefresh column을 하나 더 추가해서 이중으로 검증하는게 나은지 카카오에서 이미 검증을 한 후에 전달해주니 jwt토큰을 무시하고 1회 검증으로 하는게 나은지 의견을 듣고싶습니다
개발자
#kakaologin
#jwt
#login
답변 1
댓글 0
조회 55
7달 전 · 익명 님의 질문 업데이트
개발자 신입 준비
안녕하세요 개발자 준비중인 컴퓨터공학과 4학년 학생입니다. 우선 저는 3회정도의 프로젝트를 진행했고 어쩌다 보니 팀 프로젝트 였지만 제가 거의 풀 스택으로 진행했고 Spring, Node, React를 사용가능하고 아키텍처적으로 규모가 있진 않지만 대략 30개 이상의 Entity를 가지는 규모의 프로젝트들이며 기업인분들에게 좋은 평가를 받은 프로젝트도 있습니다 (Flutter로 간단한 앱도 만들어보았고 , 어플리케이션 프로젝트도 진행 해보았습니다.) React는 타입스크립트 자바스크립트(JavaScript)를 사용해서 나름 자유자재로 만들고 수정할 수있고 타입스크립트(TypeScript)로 전환하는 방향으로 가고 있으며 Node는 레거시로 Express와 sql사용해서 사용했고 Spring은 Spring Boot, Spring MVC, Spring Security,JPA, Redis, JWT 등으로 다양하게 접목 시키고 있고 왜 필요할까를 생각하며 다양하게 접근하고 있습니다. (JPA나 AOP 등의 깊은 공부도 함께 하고 있습니다.) 실제 서버에 배포도 해보았고 지금 진행중인 프로젝트는 AWS를 통해 여러 인스턴스로 나눠서 최적화 하여 배포해볼 예정입니다. 이렇듯 부족하지만 웹쪽에서는 나름 발전의 자신감이 있는편입니다 하지만 제가 코딩테스트에 준비를 하지못했는데 요즘 코딩테스트가 거의 모든 기업 필수여서 아직 프로젝트 진행중이기도 하고 코딩테스트 때문에 아직 입사지원을 생각하지 못하고 있습니다. 코딩 문제를 한번도 풀어본적 없고 기본문법조차 잘 모르고 그런 상황입니다 ㅜㅜ 막상 시작하려고하니 시간적 압박도 그렇고 어떻게 어느정도의 기간을 잡고 해야할지 막막해서 글올려봅니다 선배님들 현직자분들 저는 웹 관련해서 너무 재밌게 찾아보고 고민하며 작업을 하는데 코딩테스트를 따로 준비해서 내년에 입사를 지원하는게 맞을까요 보통 어느정도가 되어야하고 어느정도 시간이 필요할까요 도움 부탁드립니다. 읽어주셔서 감사합니다!
개발자
#신입
#개발자
#코딩테스트
#취업준비
답변 0
댓글 0
조회 137
9달 전 · 고지완 님의 질문
OAuth2 + jwt 환경 부하 테스트 방법에 대한 질문..
최근 성능 테스트의 중요성에 대해 알게 되어서 목표 성능치를 두고 부하테스트를 진행해보려는 계획에 있습니다! 테스트 툴로는 nGrinder를 사용할 생각인데요, 문제는 제 서버가 이메일 로그인을 지원하지 않고 oauth2와 jwt를 활용한 인증/인가 방식을 사용하는데 부하테스트 시 가상 유저에게 어떻게 accessToken을 발급해주어야 하는지에 대한 궁금증이 생겼습니다..! 제가 생각해본 방식들은 다음과 같습니다. 1. 실제 유저에 대한 accessToken을 하나 발급해두고 이를 고정값으로 사용한다. - 이 방식은 제일 편하지만 사실상 한명의 유저에 대한 시나리오만 테스트할 수 밖에 없고, 같은 유저에 대한 각종 캐싱된 데이터들로 인해 실제 상황과는 동떨어진 작업이 될 것 같아 채택하지 않았습니다. 2. FakeAuthServer와 같은 가상의 OAuth 서버를 만들어 로그인을 시도한다. - 구현하기는 어려워보이지만 그나마 가장 실제 서비스와 동일한 형태입니다. 하지만, 제가 테스트하려는 시나리오는 여러 요청에 대한 순차적인 테스트가 아닌 하나의 API가 얼마나 많은 부하를 견딜 수 있는지 보기 위한 테스트라서 굳이 로그인 과정을 테스트에 포함시킬 필요는 없어보입니다.. - 사실 하나의 API에 대한 테스트만 진행해도 괜찮은지 몰라서 이 방법을 버리지 못하고 있습니다 3. nGrinder의 테스트 스크립트에서 @BeforeThread에 jwt를 발급받는 로직을 작성해서 테스트 전 미리 토큰을 발급받아 요청한다. - 이 방식은 로그인 과정은 포함되어 있지 않고 이미 토큰을 발급받았다는 가정하에 하나의 API만 테스트하기 가장 적합한 방법이라고 생각이 되었습니다. - 번거롭지만 jwt를 직접 생성해주기 위해 jjwt 라이브러리를 nGrinder에 포함시켜야 될 것 같습니다 - 하지만 이렇게 스크립트에서 토큰을 발급해주는게 맞는지 실무에서도 이런식으로 사용하는 경우가 있는지 궁금합니다.. 처음 부하 테스트를 적용하려고 하는데 oauth2 + jwt로만 구성된 예제가 보이지 않네요 ㅠㅠ 어느 방법이 가장 적절한지 혹은 더 나은 방법이 있는지 조언을 구하고자 질문 남깁니다!
개발자
#ngrinder
#oauth
#jwt
#부하테스트
#성능테스트
답변 0
댓글 0
조회 125
하루 전 · 상현 님의 답변 업데이트
Nextjs14 서버 컴퍼넌트 JWT 갱신 방법 문의
안녕하세요 NextJS14 에서 JWT 로그인 방식으로 프로젝트 진행중에 있습니다. 현재 AccessToken 만료시 재 갱신하는 로직을 하면서 해결하지 못하는 내용이 있어서 문의 드리립니다. 서버 컴포넌트와 클라이언트 컴포넌트에서 갱신된 AccessToken 을 공유 하는 법에 대해서 어떻게 처리 하셨나요? - app router 사용 - accessToken, refreshToken 쿠키 사용 - fetch 를 이용하여 API 호출 아래 테스트 내용으로 서버 컴포넌트에서 AccessToken 만료되어 갱신되는 경우 클라이언트로 쿠키를 갱신해줄 방법을 모르겠습니다. 너무 CSR 구조로 생각하는거 같기도해서, 이런 경우 어떻게 토큰을 현행화 해서 사용하는지 문의 드립니다. 별도 가이드 문서를 더 찾아보면 서버 컴포넌트에서는 쿠키를 사용하지 말라는 글도 보여서, 방향성을 잘못잡고 있는 느낌도 들고 있습니다. 많은 조언 부탁드립니다!! 테스트 케이스) 1. 서버 <-> 클라이언트 (에러) - 서버 컴포넌트에서 백엔드 API 호출 -> 토큰 만료 -> AccessToken 재 갱신 API 호출 -> 쿠키 set -> 클라이언트에서 백엔드 API 호출(당연히 클라이언트에서는 쿠키가 갱신안되서 에러) 2. 서버 <-> 서버(성공) - 서버 컴포넌트에서 백엔드 API 호출 -> 토큰 만료 -> AccessToken 재 갱신 API 호출-> 쿠키 set -> 서버 백엔드 API 호출 3. 클라이언트 <-> 클라이언트 (성공) - 클라이언트 컴포넌트에서 백엔드 API 호출 -> 토큰 만료 -> AccessToken 재 갱신 API 호출-> 쿠키 set -> 클라이언트 백엔드 API 호출
개발자
#nextjs
#jwt
#accesstoken
#refreshtoken
#nextjs14
답변 1
댓글 0
조회 102
10달 전 · 상현 님의 새로운 답변
next14의 next/headers의 cookies를 이용한 쿠키설정
안녕하세요 현재 데이터시각화 사이트 프로젝트를 진행중입니다. next14와 spring boot(리소스와 인증.인가)를 사용하고 있고, 카카오 소셜로그인을 하면 스프링서버에서 jwt(access 토큰)를 발급해주고 refresh 토큰은 redis를 통해 관리되고 있습니다. 받아온 토큰은 cookie를 통해 관리하고 있습니다. seo를 위해 ssr을 사용하고 있는데, ssr과정에서 데이터를 fetch를 할 때 토큰을 같이 보내고, 만약 액세스 토큰이 만료되고 리프레시 토큰이 살아있다면 응답 헤더에 새로운 액세스토큰을 보내주고 있습니다. 그런데 이때 next/headers의 cookies를 사용하여 쿠키를 세팅하는것이 안됩니다. 데이터 페치중, 혹은 ssr과정중에는 Cookies can only be modified in a Server Action or Route Handler. 라는 오류가 뜨며 cookie를 set 하거나 delete하는게 안됩니다. 이럴 경우는 어떻게 해야할까요?
개발자
#next.js
#cookie
#jwt토큰
답변 1
댓글 0
조회 175
10달 전 · ㅊ 님의 질문
스프링 mvc jwt토큰
스프링 mvc에서 타임리프로 웹 제작중인데 jwt엑세스토큰을 해더에 담는데 리다이렉트 쓰면 헤더가 소멸되는데 어떤식으로 사용해야할까요 로그인 후 정보를 가지고 서비스 메인페이지로 가는데 쿼리나 포스트로 정보를 받아서 사용해야하는지 Jwt에서 즉 필터에서 다른 방법이 있는지 궁금합니다!
개발자
#스프링
#스프링시큐리티
#jwt
#타임리프
답변 0
댓글 0
조회 39
10달 전 · 익명 님의 새로운 댓글
백엔드 신입 프로젝트
안녕하세요! 게시판 기능을 만들기 위해 spring,springboot,jpa,mariadb, aws, 헥사고날 아키텍처, Rest Api로 (화면x) 만들었었습니다. 그런데 이것으로는 당연히 포토폴리오로 부족할 것 같아서 , 멘토-멘티 매칭 시스템을 하나 제대로 개발해서 포토폴리오로 사용하려고 계획중 입니다. 그런데 처음 만든 게시판 프로젝트에 회원관리 쪽에서 jwt와 시큐리티를 못써봤고, 화면을 못만들었던게 신경이 쓰입니다… 이 상황에서 그냥 저 게시판프로젝트에 못했던걸 해결 하고 나서 새프로젝트로 넘어가는게 좋을까요?……
개발자
#프로젝트
#포트폴리오
답변 1
댓글 1
조회 112
일 년 전 · 김인후 님의 새로운 답변
spring security에서 JWT를 사용할 때 질문이 있습니다.
SecurityConfig에서 .requestMatchers(HttpMethod.GET, "/boards/*/comments").permitAll() 이런 식으로 허용을 해주고 JwtAuthorizationFilter에서 accessToken이 유효하지 않으면 response에 토큰에 문제가 생겼다는 에러 메세지를 리턴을 하게 해뒀습니다. GET /boards/*/comments 요청을 보내면 해당 게시물의 댓글들을 조회를 해올 때 좋아요를 누른 상태인지 누르지 않은 상태인지 구분을 할때 문제가 생겼습니다. 로그인을 한 사용자는 댓글들을 조회할 때 좋아요를 눌렀나 안눌렀나 확인을 해야하고 로그인을 하지 않은 사용자는 무조건 좋아요를 안 누른 상태로 해야되는데 JwtAuthorizationFilter에서 에러 메세지를 리턴을 하되면 로그인을 해야지만 조회가 되는 문제가 생기고 JwtAuthorizationFilter에서 에러 메세지를 리턴하는 코드를 빼자니 모든 Controller쪽에서 null체크를 해줘야 하고... 감을 못잡겠습니다ㅜ_ㅜ
개발자
#java
#spring
답변 1
댓글 0
조회 70
일 년 전 · 이윤호 님의 새로운 답변
webview_flutter 안드로이드 cookie 질문이요...
회사에서 부득이하게 앱개발자 없이 앱개발을 해야하는 상황이라 웹으로 만들고 flutter 웹뷰를 만들었습니다. iOS에서는 쿠키에 jwt가 저장되서 자동로그인 기능이 잘 작동되고 있는데요, 안드로이드에서는 cookie를 따로 관리를 해줘야 한다고 하더라구요... 그래서 webview_cookie_manager 와 flutter_secure_storage를 이용해서 onPageFinished가 될 때 main page이면 cookieManager.getCookies로 jwt를 가져오고 storage.write로 쿠키를 저장해 주고 있습니다. 그리고 initState()할때 Future<void> _loadStoredCookies() async { final jwt = await storage.read(key: 'jwt'); print('jwt : $jwt'); if (jwt != null) { final cookieManager = WebviewCookieManager(); await cookieManager.setCookies([ Cookie('jwt', jwt) ..domain = "메인페이지" ..path = "/" ..secure = true ..httpOnly = true ]); bool hasCookies = await cookieManager.hasCookies(); print('쿠키가 존재하는가? $hasCookies'); } } 이렇게 쿠키를 확인하고 쿠키를 set해주는데 백그라운드에서 앱을 완전히 종료시키고 다시 실행하면 쿠키가 사라지더라고요... 왜 그런건가요...??
개발자
#flutter
#cookie
#android
답변 1
댓글 0
조회 279
일 년 전 · 이양일 님의 새로운 답변
api gateway에서 rbac 처리 관련 질문
jwt내에 user role(guest,user,admin 등)관련 정보가 존재하는 상태에서 api gateway에서 jwt decode후 api를 rbac처리 하고자 합니다. 질문은 아래와 같습니다. rest api에 명시적으로 어떤 권한의 사용자가 사용할수 있는지 작성해서 필터링하는지 아니면 api gateway에서 api각각이 어느 role까지 접근할수 있는지 매핑해두고 필터링하는지 여쭤보고싶습니다.
개발자
#infra
#rbac
답변 1
댓글 0
조회 213
일 년 전 · 설송우 님의 새로운 댓글
Jwt 리프레시 토큰 관련 궁금증
안녕하세요! Jwt 인증로직을 구현하고있는데, 리프레시토큰 쪽을 구현하다가 문득 의문이 들어서 질문 남겨봅니다! 보통 엑세스토큰이 만료되었을때 1. 리프레시 토큰으로 검증에 성공하면 이후, 기존 요청은 캔슬하시고 새로운 토큰을 클라이언트에게 반환 2. 리프레시 토큰으로 검증에 성공하면 새로운 토큰정보를 기존 요청에 대한 반환과 함께 반환 1번 방법으로 한다면, 클라이언트쪽에서는 2번의 요청을 수행해야하고, 2번 방법으로 한다변 1번의 요청만으로 기존 요청에 대한 수행과 토큰 갱신을 둘다 할 수 있을것같은데 보통 실무에서는 어떻게 진행하나요??
개발자
#jwt토큰
#인증
#인증만료
답변 1
댓글 1
추천해요 1
조회 102
일 년 전 · 이승준 님의 질문
JWT invaild signature 오류
쿠키에 accessToken이 발급이 되고 있고 데이터 베이스에 refreshToken이 발급 되고 있습니다 근데 사용자 조회를 하려고 api코드를 작성하니 계속 invalid signature 오류가 나오네요 시크릿 키도 확인 해봤지만 그건 문제가 아니였어요... 혹시 몰라 깃허브 코드 남겨둡니다... 문제를 해결해 주실 능력자 찾아요.... https://github.com/LeeWinJun/nikeShop
개발자
#토큰-오류-
#jwt
#풀스택
#프론트엔드
#백엔드
답변 0
댓글 0
조회 73
일 년 전 · 승주 님의 새로운 답변
springsecurity session & JWT 동시사용 질문
안녕하세요 session과 jwt의 동시사용에 대하여 질문을 드리려고 합니다. session은 서버의 자원을 점유한다는 점에서 jwt를 사용한다고 알고 있습니다. 하지만 보안이 중요시되는 사이트라면 jwt랑 sesison을 같이 사용해도 괜찮을까요? 아직 대학생이라 이것저것 해보고 싶은 마음에 session id를 jwt에 넣어 사용해보려고합니다. MVC와 WEBFLUX 두가지방법으로 구현해서 비교해보려고하는데 괜찮은 프로젝트가 될지 아니면 그냥 삽질일지 판단을 못하겠어서 질문 드립니다.
투표
개발자
#spring-security
#session
#jwt
#mvc
#flux
답변 2
댓글 0
조회 313
일 년 전 · 백승훈 님의 새로운 답변
새로고침 시 로그인 유지할 때 어떤식으로 하나요?
안녕하세요. 서버를 구축하고 JWT로 로그인 구현 연습 중인 프론트엔드 개발자 지망생입니다. 로그인을 했을때 서버에서 액세스 토큰과 유저 정보(유저 이름)를 받고 토큰은 웹 로컬스토리지에 저장하고 유저 정보는 리덕스로 상태를 관리하였습니다. 하지만 새로고침을 하면 리덕스의 상태가 없어져서 화면에 표시한 유저정보(유저 이름)가 사라지는 문제가 발생합니다. 이에 저는 2가지 방법을 생각해봤습니다. 1. 로그인을 한 후 토큰 뿐만 아니라 유저 정보(유저이름)도 같이 웹 로컬스토리지에 저장하여 app.js 첫 렌더링 시 유저 정보를 리덕스 상태에 넣기 2. 토큰만 저장하고 새로고침할 때 마다 서버에 요청해서 유저 정보를 가져오기 위 두 방법 중 어떤 방법이 옳은 방법인지 궁금합니다. 아니면 더 좋은 방법이 있는 지 궁금합니다.
개발자
#로그인
#jwt
#프론드엔드
답변 3
댓글 0
조회 461
일 년 전 · 최성수 님의 새로운 댓글
넥스트js에서 사용자 인증 페이지 구분
사용자 인증은 jwt토큰으로 하고 있습니다 현재는 serversideprops 또는 클라이언트 사이드에서 토큰을 가져와서 로그인 페이지로 보내고 있는데요 어느정도 모듈화가 필요한 것 같은데 마땅한 방법이 떠오르지 않아 질문 드립니다 제가 생각한 방법은 사용자 인증이 필요한 pathname을 array로 정리해 app.js에서 구분하려 하는데 더 좋은 방법이나 현재 사용하고 계신 방법이 있다면 공유 부탁드립니다
개발자
#nest.js
#프론트
답변 1
댓글 1
추천해요 1
조회 99
5달 전 · Katie 님의 답변 업데이트
국비 수료후 취업이 힘들어 다른 직종으로 변경해야하나 고민입니다..
안녕하세요. 고졸 비전공자 26 남 입니다. 23년 12월 국비 수료후 4개월간 개인사정이 있어 공백이 있었고 어느정도 해결된 뒤 다시 개발 공부를 시작했습니다. 국비 학원에서 배운 스택은 안드로이드 앱개발 + servlet 기반 웹 개발이고 해당 기술로 프로젝트 진행해서 포트폴리오를 작성했습니다. 수료했을 당시에도 취업시장이 좋지않았고 신입에게 요구되는 기술스택 또한 학원에서 배운 기술로는 많이 부족하다 생각해서 추가적인 학습이 필요하다 판단했습니다. 그래서 spring boot, jpa, 타임리프를 기반으로 한 개인프로젝트 진행 후 jwt, aws, ci/cd 까지 학습을 목표로하고 기술을 활용한 프로젝트 진행, 포트폴리오에 추가 그리고 이력서 지원하는 전략으로 계획하고 있었습니다.. 하지만 제가 학습을 목표로 한 기술스택을 보유한 신입도 취업이 힘들다는 얘기를 보았습니다.. 중요한 건 화려한 기술스택이 아닌 얼마나 깊이있게 이해했는지가 중요한 건 저도 잘 이해하고 있습니다.. 그치만 학습을 마치고 이력서를 보완한다고 한들 취업에 성공할 수 있을거라는 희망적인 미래가 보이지않기때문에 동기부여도 잘 안되고 다른 직종을 알아봐야하나 고민입니다.. 솔직히 개발에 재능이 있는 지 잘 모르겠습니다. 하지만 사고하는 걸 좋아하고 복잡한 고민끝에 작성한 코드가 제 의도대로 동작하는 모습이 좋습니다.. 학원에서 수업도 재미있게 들었고 "왜 이제야 개발공부를 했을까? 진작 해볼걸" 라고도 생각했습니다.. 좋아하면 계속 그냥 하면 되는 거 아닌가 싶습니다만.. 나이도 제법 먹고 이뤄낸 것이라곤 군복무 밖에 없습니다.. 그래서 하루하루 초조하고 뭔가 이뤄내고 싶다가도 암울한 미래에 사기가 떨어지네요.. chat gpt 가 나온 이후로 신입의 일자리가 많이 사라진 지금. 지금이라도 다른 직종을 알아보는 게 좋을까요.. 긴 글 읽어주셔서 감사합니다. 착잡하고 불안한 마음에 다소 부정적이고 정신없게 글 작성한 거 같아 죄송합니다. 😭 진심어린 조언 해주시면 감사하게 듣겠습니다. (추가적으로 개발 공부를 쭉 하는 방향을 추천 하신다면 어떤 공부를 어느정도 깊이로 해야하는지 방향을 잡아주셨으면 합니다.. 현재 spring boot + jpa 활용해서 개인프로젝트 개발 계획중입니다. 간단한 crud는 가능한 정도로 학습했습니다.)
개발자
#고민
#직종변경
#비전공자
#고졸신입
답변 3
댓글 0
추천해요 3
조회 1,966
일 년 전 · 안희수 님의 새로운 답변
React JWT 재갱신 방법이 또 있을까요?
안녕하세요 회사에서 기존 인증시스템을 개편하면서 프론트에서 JWT를 관리하게되었는데 현재 axios intercepter response를 통해서 재갱신을 하고 있는데 기존로직과 충돌되는 부분이 많아 재갱신이 안될때가 있었습니다. 현재 access token은 store에 저장되고 있고, refresh token은 쿠키에 저장되고 있어서 새로고침시에 refresh token을 통해 갱신하고있습니다. 그런데 현재 재갱신 방법을 바꾸고싶은데 혹시 axios intercepter말고 다른 방법은 없을까요? 현재 고려중인 방법은 커스텀훅, HOC 구조로 개편하는 방법을 생각중인데 다른 방법이 있는지 궁금합니다.
개발자
#react
#jwt로그인
#jwt
#redux
답변 1
댓글 0
조회 100
일 년 전 · 박정환 님의 답변 업데이트
JWT에서 refresh_token을 넘겨줄때 어떡해 넘겨주면 좋을까요?
로그인을 했을 때 access_token, refresh_token을 받아서 클라리언트에서 쿠키로 저장을 했습니다. access_token이 만료됬을 때 refresh_token을 넘겨줘야 하는데 이 부분에서 궁금한게 있습니다. 만약에 글쓰는 부분같이 access_token이 필요한 부분에서 access_token이 만료된 경우에 refresh_token을 넘겨주고 access_token을 다시 받아오는데 이미 여기서 글쓰기는 access_token이 없어서 실패하는 거잖아요. 그러면 다시 글쓰기를 시도해야 하는건가요? 아니면 access_token이 없어지고 refresh_token을 줘서 받아오는게 아니라 access_token이 만료 기간이 다가오면 넉넉하게 잡아서 refresh_token을 줘서 받아오는건가요??
개발자
#쿠키
답변 2
댓글 0
조회 133
일 년 전 · 익명 님의 새로운 댓글
토큰값을 받아오지 못하는 문제 (undefined)
안녕하세요 JWT 토큰을 이용해 로그인 검증하는 로직을 구현하고 있습니다. 로컬스토리지에 토큰을 저장하는 것까지 성공했으나 프론트 측에서 로그인 검증을 요청할때 실제 토큰 값을 받아오지 못하는 문제가 있어 질문 드립니다. login-required에서 토큰 값 유무 로직을 전부 지우고 콘솔로만 찍는 경우 undefined와 실제 토큰값이 나타납니다. 만약 토큰 값 유무 로직을 이용한다면 undefined값만 서버로 들어와 페이지가 무한로딩 되는 현상이 나타납니다. next()처리가 안되기 때문인 것 같습니다. (+ index.html은 test.js를 연결하고 있습니다.) 사진으로 보면 네트워크 요청헤더에서 확인한 결과 1. 처음엔 document 유형의 localhost를, (인증 헤더 x) 이후 js를 불러온다 2. 마지막에 xhr형식인 localhost를 불러옵니다 (인증 헤더 o) (여기서 undefined, 실제 토큰값이 콘솔에 동시에 나타나는 이유라고 생각이 듦) (순서를 보면 document 유형 localhost -> css, js -> xhr 유형 localhost 즉 처음에 document 유형에서 인증헤더를 못가져와서 (js가 로드되기 전이여서) 토큰 유무를 체크하지 못하는 것 같습니다) 결론적으로 제가 생각한 문제 분석 (1) ('/') 에 get 요청을 보낸다. (2) 서버는 loginRequired를 실행한다. (3) 서버로 부터 html을 받지 못한 상태에 loginRequired가 실행되어 토큰 값은 undefined가 된다. (4) next()를 거쳐 서버에서 html을 클라이언트로 부터 응답을 해준다. (5) html을 브라우저에 보여주면서 그 html에 연결된 js를 불러온다. (6) 이때 불러온 test.js에서 get요청 ('/') 로직을 불러와 다시 server.js에서 loginRequired 응답으로 토큰 값을 불러온다. 즉 js가 로드가 되어야 userToken을 로컬스토리지로 부터 받아오고 요청을 하여 토큰 값을 불러올 수 있다. 그런데 get 요청전에 토큰 검증을 하고 허가가 되어야 html을 로드해야 하지 않을까? 그렇다면 서버에서 처리를 해야하는가? 배워가는 학부생으로 많이 부족하다고 생각합니다,, 선배님들의 견해를 받고 싶어 게시물 올립니다..! 핵심 코드는 다음과 같습니다.
개발자
#javascript
#node.js
#axios
#rest-api
답변 2
댓글 2
조회 176
일 년 전 · 박정환 님의 댓글 업데이트
JWT 인증에 대해서...
jwt 인증을 어디까지 사용하는건지 궁금합니다. 토큰에 담긴 유저정보를 사용 할 수 있도록 리턴해주어야 하는지 아니면 인증이 되었다면 더이상 사용하지 않고 req.body등에 담긴 userID를 가지고 다시 유저 정보를 가져오는 건지 궁금합니다.
개발자
#jwe
#로그인
#백엔드
답변 1
댓글 2
조회 171
일 년 전 · 안희수 님의 답변 업데이트
NextJS 14에서 JWT를 쿠키를 통해 관리하려고 하는데 서버에서 set-cookie 해주는 방식말고 route 핸들러에서 주입할수는 없나요?
안녕하세요. 최근 NextJs를 공부하며 이전 리액트 기반의 사이드 프로젝트를 NextJs로 구현해보고 있습니다. 카카오 로그인만 지원을 하고 있고, 프론트 쪽에서 카카오 인가 코드를 백엔드로 넘기면 백에서 jwt를 발급해서 응답으로 access token과 refresh token을 프론트로 넘겨주고 있습니다. 이전 프로젝트에서는 두 토큰 모두 localStorage에 저장하는 방식으로 했었는데요, 이번에는 쿠키를 이용해보려고 하고 있습니다. 다만 백엔드에서 set-cookie를 해놓지 않아서 응답으로 받은 토큰을 따로 쿠키에 저장해야하는 상황입니다. 하지만 Server Component에서는 set cookie가 안되는 것으로 알고 있습니다. <목표 구현 방식> route handler를 통해서 백엔드 api를 호출하고 그 값을 쿠키에 저장하도록 코드를 짰습니다. (/app/api/token/route.ts) return 값은 확인을 위해서 임의로 넣었습니다. 그리고 쿠키에 저장된 토큰을 통해서 서버 컴포넌트에서 이를 이용해 백엔드 api 통신을 하고 싶습니다. 하지만 서버 컴포넌트에서 쿠키를 확인하니 비어있는 쿠키인 것을 알 수 있었습니다. 얕은 지식으로 생각을 했을때, (route handler - 브라우저 혹은 서버 컴포넌트)에서 생성한 쿠키는 (백엔드 도메인 - 브라우저 혹은 서버 컴포넌트) 통신에 사용되는 쿠키와 다르기 때문이라고 생각이 들었는데 해답을 찾지 못했습니다. <질문 사항> - 백엔드 서버에서 set-cookie를 하지 않고 직접 구현할 순 없을까요? 쿠키는 forwarding이 안되나요? - 제가 생각한 구조 말고 추천하시는 토큰 관리 방식에 대해서 알려주셔도 감사하겠습니다. 아직 초보 개발자에 글도 잘 쓰지 못해 이해하시기 힘들 것 같지만, 넓으신 아량으로 지식을 나눠주신다면 정말 큰 도움이 될 것 같습니다. 긴글 읽어주셔서 감사합니다 (_ _)
개발자
#next.js
#jwt
#react
#front-end
#cookie
답변 1
댓글 0
추천해요 1
조회 1,064
일 년 전 · 안희수 님의 답변 업데이트
JWT 토큰 중 accessToken은 어디에 보관하는 것이 좋을까요?
안녕하세요 jwt 토큰 보관에 대해 질문 있습니다. 원래는 accessToken은 로컬스토리지에, refreshToken은 httponly cookie로 보관하려 했습니다. 하지만 accessToken을 로컬스토리지로 보관하면 XSS 공격에 취약하다라는 단점 때문에 로컬 변수를 사용하라는 글도 종종 보이더라구요. 어떤 방식을 사용하는게 좋은 방법일까요? 퍼널 형식의 웹페이지며, 이메일 인증을 통해 토큰을 발급합니다. acceToken의 만료 시간은 30분정도로 생각중입니다.
개발자
#react
#jwt토큰
#accesstoken
#cookie
#localstorage
답변 1
댓글 0
추천해요 1
조회 335
일 년 전 · ccat 님의 새로운 답변
스프링시큐리티jwt적용 질문
안녕하세요 현직으로 자사솔루션개발하는 6개월차 초보개발자 입니다 제가 독학으로 스프링 시큐리티 로그인과 jwt 적용하는걸 공부하고있는데 jwt 적용하는게 조금 어렵더라구요. 지식도 좀 부족하고.. 크몽이나 그런데서 질문이나 도움을 얻을려하는데 마땅히 보이진 않더라구요 제 프로젝트에 적용해서 응용까지 같이 보면서 하구싶은데 이런 분들은 어떻게 찾아 뵐수 있을까요??
개발자
#스프링-시큐리티
#스프링부트
#jwt
답변 2
댓글 0
조회 109
일 년 전 · 장성호 님의 새로운 댓글
토큰 기반 인증에서 리프레쉬 토큰 관리
JWT로 토큰 기반 인증을 구현할 때 궁금한게 좀 생겼습니다! 리프레쉬 토큰은 DB에 저장해볼까 했는데 그러면 토큰 기반 인증이 아니라 세션 기반 인증인 것 같아서 고민입니다. DB에 저장하는 순간 Stateless 장점도 없어지는 것 같구… Stateless로 구현한다해도 로그아웃 때문에 블랙리스트 관리해야한다는데, 이러면 결국 Stateful인거 같구… 다른 분들은 어떻게 구현하시는지 궁금합니다! 일단 이렇게 고민해봤습니다. --- <1번 시나리오 - 리프레쉬 토큰을 DB에 저장하지 않는 시나리오> 1. 액세스 토큰이랑 리프레쉬 토큰은 클라이언트가 저장하고 서버는 저장하지 않는다. 2. 클라이언트 요청이 왔을 때 리프레쉬 토큰이 만료되지 않았으면 액세스 토큰을 발급해주고, 만료됐으면 액세스 토큰을 발급해주지 않는다. (401 또는 403) 장점 - DB에 접근할 이유가 없으므로 Stateless 하다. 단점 - 로그아웃을 했을 때 토큰 자체는 무효화시킬 수 있는 방법이 없다. <2번 시나리오 - 리프레쉬 토큰을 DB에 저장하는 시나리오> 1. 액세스 토큰이랑 리프레쉬 토큰은 클라이언트와 서버가 각각 저장한다. 2. 클라이언트 요청이 왔을 때 리프레쉬 토큰이 만료되지 않았으면 액세스 토큰을 발급해주고, 만료됐으면 액세스 토큰을 발급해주지 않는다. (401 또는 403) 장점 - 로그아웃을 했을 때 토큰 자체는 무효화시킬 수 있다. 단점 - DB를 접근해야하므로 Stateful 하다. => 클러스터링이나 샤딩이 도입되면 복잡도가 올라간다. --- 1번 시나리오 단점을 극복하려고 블랙 리스트를 Redis에 관리한다는 글들을 종종 봤습니다. 블랙 리스트를 도입 안했을 때 문제는 실제로 겪어본 적이 있어서 공감은 가는데, 이러면 사실상 세션 쓰는거랑 똑같지 않나라는 생각이 듭니다. 인증시 결국 Redis 같은 DB에 접근해서 직접 확인하는 거니까요. 한편으로는 서비스가 매우 많이 커지면 세션이 부담돼서 토큰 기반 인증으로 전환한다는데, 파면 팔수록 점점 세션 기반 인증으로 바뀌는 것 같아서 고민입니다.
개발자
#인증
#토큰
#db
#stateless
#stateful
답변 1
댓글 1
조회 175
일 년 전 · 김도원 님의 답변 업데이트
퇴사한지 반년 넘은 3년차 java 개발자 입니다..
전 회사에서 크롤링으로 혹사당한 후 대상포진까지 걸리고 더는 안되겠다 싶어 퇴사하고 3개월정도 휴식기를 가지고 3개월째 준비하고 있습니다. 총 반년.. 사이드프로젝트도 계속 만들고 있는데 어디까지 손봐야 하는지 감이 잡히지 않습니다.. 코딩테스트는 사실상 준비하지 않아서 과제테스트를 보는 곳으로 생각하고 있는데 3년차로 들어가게 된다면 어떤 것을 해야하는지 혼란합니다. 현재는 spring security, jwt, oauth2 를 이용해 로그인 기능을 구현해 놓은 상태에 docker, aws, jenkins를 이용해 서버에 올리는 정도까지만 진행한 상태입니다.. 찾아보니 redis, kafka 같은 것들도 해야 할 것만 같은데 시간이 없는 상태에서 진행하는게 맞을까요? 테스트코드도 습관이 되어 있지 않아서 혼자서 작성하려니 너무 벅찬 느낌이 듭니다.. 현재하고 있는 것에서 마무리하고 구직을 해도 상관없을지, 더 배우고 채워야 할지 모르겠습니다,,
개발자
#이직
#java
#백앤드
#3년차
답변 5
댓글 6
추천해요 10
조회 3,727
일 년 전 · 익명 님의 새로운 댓글
[React] 도움!! 같은 함수 2번 실행하는 방법
안녕하세요, 스타트업에 취업한 신입 프론트 개발자입니다. 지금 회사에서 jwt 토큰으로 로그인을 구현하고있는데, 지금 3일째 붙잡고있는데 전혀 해결이 안되서 너무 막막합니다 ... 페이지가 처음 열릴 때 load_board()라는 함수를 실행합니다. 이는 axios 통신을 하는 함수이고 만약 res.data=== 'reload' 라면 refresh_token()함수를 실행한 후 다시 load_board()를 실행하고 싶습니다. 이걸 어떻게하면 좋을까요 ?... 제가 해봤던 방법은 1번 .then((res) =>{ setIsRefresh(true); } useEffect(()=>{ if(isRefresh){ refresh_token(); setIsRefresh(false); load_board() },[isRefresh]) 이 방법은 되긴되나 서버와 통신을 최소 3번씩하고 ... (refresh_token()를 실행하기전에 자꾸 load_board()를 실행해서...) 2범 async await을 써보니 useEffect(()=>{ const res = load_board(); if(res.data ==='reload'){ await refresh_token(); await load_board} ... },[]) 이건 확실히 한번만 실행이되는데 refresh_token()의 리스폰이 오기전에 load_board()를 실행하니까 의도한대로 안돼요 . . . . . . . . 이걸 어쩌면 좋을까요. . . . . .
개발자
#react
#로그인
#jwt
#비동기
답변 4
댓글 7
조회 398
일 년 전 · 익명 님의 질문 업데이트
인공지능 대학원 생각중인데 도와주세요!
컴공 전공생입니다. 코드짜서 프로젝트에 참여하고 개발하는 것보단 학과 공부가 더 편하고 흥미가 있어서요. 인공지능 쪽(정확한 분야 설정 X, 이제 공부시작)으로 대학원 생각중이여서 올해부터 머신러닝 스터디에 참여하고 있어요 혹시 벡엔드 지식이 있어야할까요? http, jpa, spring security, jwt, aws, ci/cd를 공부하는 스터디가 있어서 참여해야할지 고민됩니다 많은 조언 부탁드립니다!!
개발자
#인공지능
#대학원
답변 2
댓글 0
조회 213
일 년 전 · 익명 님의 새로운 댓글
프론트에서 세션으로 로그인 유지 하려는 과정 중 문제가 생겼습니다.
안녕하세요 현재 제가 백엔드(스프링)를 진행하고 있고, 지인이 프론트를 진행하고 있습니다. JWT를 진행하기 전 세션을 통해서 로그인을 해보려고 합니다. 결론부터 말씀 드리자면 쿠키값에 세션id가 저장이 안되어 로그인 유지가 안되는 상황입니다. 사용하고 있는 로그인 방식은 Spring Security FormLogin 방식입니다. 복잡하게지만 백엔드 쪽에서의 문제인지 코드를 한 번 올려드리겠습니다. 생각 1. 인텔리제이 내에서 html을 등록하여 진행하면 같은 도메인, 포트이기 때문에 시큐리티가 자동으로 세션을 만들고 그 세션을 통해 자동으로 유지된다고 생각합니다. 생각2. 하지만, 프론트, 백엔드 서버 포트가 다르기에 successHandler을 통해서 쿠키에 세션ID를 담아서 보내야 된다고 생각했습니다. 하지만, 세션ID는 유지가 되지 않고, 그것에 대해 계속 알아보던 중 해결책을 못찾아 질문을 드립니다. 프론트단에서 따로 처리를 해야되는 걸까요? 아니면 제가 제대로 설정을 못하고 있는 것일까요
개발자
#spring
#프론트
#백엔드
#세션
#session
답변 1
댓글 4
조회 268