스프링 73

Springboot 집주소검색! with 카카오 주소검색 api

결제랑 다르게 딱히 검증을 할 필요가 없어서 (아닌가..?) 그냥 카카오 api를 통제로 들고 왔다 백엔드에서 딱히 해줄 건 없어 보인다 http://postcode.map.daum.net/guide Daum 우편번호 서비스 우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다. postcode.map.daum.net 사용자가 선택한 값 이용하기 를 선택하고 코드 보기를 하면 주르륵 나온다 정말 잘되어있다 가져오기만 하면 된다 (사실은 코드 통째로 가져오는걸 정말 싫어한다 그래서 카카오 로그인/아임 포트/네 아로 등 직접 하나하나 api를 만들었었다 너무 재밌었는데 여기는 백엔드에서 딱히..

Springboot Jwt+아이디 중복 검사! with XMLHttpRequest

새로운 토이 프로젝트! 회원가입부터 해보자! 크게 다를 건 없다 이전 jwt내용은 여기 있다 https://cordingmonster.tistory.com/category/Jwt 'Jwt' 카테고리의 글 목록 cordingmonster.tistory.com 아이디 중복 검사 로직 service 회원이 존재하는지 찾는 함수 userDto findEmail(String email) dao를 이용해 회원을 찾는다 return userDao.findByEmail(email); 값을 리턴한다 없다면 null이 리턴됨 판별하는 함수 public boolean confrimEmail(String email) 값을 판별한다 if(findEmail(email)==null) 없다면 true 있다면 false 리턴한다 re..

Springboot Jwt토큰 프론트와 통신하기!(4) with cookie,XMLHttpRequest

액세스 토큰은 =로컬 스토리지에 저장하고 리프레시 토큰은 =httponly 쿠키로 전송해 주자! jwtLoginFilter refresh라는 이름으로 내용을 담는 쿠키 생성 Cookie cookie=new Cookie("refreshToken", refreshToken); 자바스크립트에서 접근 못하게 httponly 켜주고 cookie.setHttpOnly(true); 쿠키 저장 response.addCookie(cookie); 서버에서 쿠키 받는 법 https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials Access-Control-Allow-Credentials - HTTP | MDN 응답헤더 Acce..

Springboot Jwt 프론트와 통신하기!(3) with localStorage,자바스크립트

jwt 토큰을 저장하는 방법은 크게 두 가지이다 https://velog.io/@0307kwon/JWT%EB%8A%94-%EC%96%B4%EB%94%94%EC%97%90-%EC%A0%80%EC%9E%A5%ED%95%B4%EC%95%BC%ED%95%A0%EA%B9%8C-localStorage-vs-cookie JWT는 어디에 저장해야할까? - localStorage vs cookie 이번에 지하철 미션을 만들면서 JWT를 클래스 property에 저장했었는데 리뷰어 분께 해당 부분을 피드백 받으면서 어디에 JWT를 저장하는 것이 좋을까 에 대해 고민해보게 되었다. 0. 기본 지식 JWT Js velog.io 이 글을 참고해서 장단점이 있다 쿠키와 localStorage인데 localStorage부터 하겠다..

Springboot Jwt 프론트와 통신하기!(2) with Refused to get unsafe header and CorsFilter

이제 진짜 마지막 해결 프런트-> 서버-> 프런트 서버-> 프런트만 하면 된다! 에러 내용 Refused to get unsafe header "Authorization" xhr.onload @ home.jsp:35 load (async) doDo @ home.jsp:33 onclick @ home.jsp:14 home.jsp:36 Refused to get unsafe header "refreshToken" xhr.onload @ home.jsp:36 load (async) doDo @ home.jsp:33 onclick @ home.jsp:14 하아.. 뭔지 모르겠다 열심히 또 몇 시간 구글링을 했다... https://stackoverflow.com/questions/4369987/jquery-ge..

Springboot Jwt 프론트와 통신하기!(1) with Access-Control-Allow-Origin and CorsFilter

진짜 짜증 나는 에러였다 내용 Access to XMLHttpRequest at 'http://localhost:8080/login' from origin 'http://localhost:9090' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 이 내용을 잘 이해해야한다 http://localhost:9090를 http://localhost:8080 서버에서 허용 해줘야한다 (사실 네이버 로그인을 시도하면서 발견한 오류였다 이틀 동안 내 서버가 문제인 줄 알고 끙끙거렸다 이걸로 2틀을 주말을 날렸다....) 필터를 걸자 corsConfig 내 서버가 응답..

Springboot Jwt 토큰 재발급!(1) with 리프레시토큰

이제 로그인 시 리프레시 토큰 유효기간을 체크 해서 리프레시 토큰 기간이 남았다면 로그인 시 리프레시 토큰 미발급을 진행하겠다 이유는 우리가 하루에 네이버/카카오 등 횟수를 생각하면 그때그때마다 리프레시 토큰을 db에 넣으면 엄청나 질 것이다 예 테스트 한건만 81개이다 3일 치 다 가지고 있었다면! 엄청났을 것이고 유저가 많다면! 리프레시 토큰 db가 아주 난리가 날것이다 그래서 로그인 시 기한 검사를 해주자! application 처음으로 사용해봤다 근데 저 노란 줄... 거슬리는데 작동은 잘된다 잘못 쓰고 있나 더 검사해봐야겠다! utillService timeStamp->localDateTime으로 변환 해주자 LocalDateTime timestamp2=timestamp.toLocalDateTi..

Spring boot Jwt토큰 검증하기!(1) with BasicAuthenticationFilter

요청이 오면 시큐리티는 BasicAuthenticationFilter로 보내는 거 같다 왜냐면 테스트를 해봤는데 모든 페이지 이동시 이 필터가 걸려있는 쪽으로 온다 1.jwtAuthorizationFilter 만들기 헤더 검사 if(request.getHeader("Authorization")==null||!request.getHeader("Authorization").startsWith("Bearer")){ 헤더가 있다면 토큰 검사 String jwtToken=request.getHeader("Authorization"); 토큰 해제 int userid=JWT.require(Algorithm.HMAC512("kim")).build().verify(jwtToken).getClaim("id").asInt(..

Spring boot jwt토큰만들기!(2) with security

자 이제 갱신을 위한 리프레쉬 토큰을 만들어 보자 발급 절차는 똑같다 다만 토큰에 사용자 정보를 안 담고 유효시간을 엄청 길게 해 놓으면 된다! 1.service 오버 로딩 기능을 사용해서 만들어주고 회원정보 없이 만들어주고 .withClaim("id",id) 제거 유효기간은 길게 .withExpiresAt(new Date(System.currentTimeMillis()+(60000*10))) 2.db 만들기/dto 만들기 메모리 엔진을 만든다 왜냐면 그냥 엔진은 너무 오래 걸려서 토큰은 빠르게 확인돼야 하기 때문이다 메모리 엔진은 컴퓨터를 껐다키면전부 날아간다 램안에 있기 때문에 빠르지만 날아간다! https://m.blog.naver.com/PostView.naver?isHttpsRedirect=tr..