본문 바로가기
반응형

Language23

React / Spring, 데이터를 효율적으로 관리 및 불러오기 오늘은 효율적으로 코드 관리하는 방법을 기록해 보겠다.(전체적인 뜻과 흐름은 이전 포스팅에 나름 자세히 적어놨으니 생략) 예시로 로그인 한 회원 정보를 아래와 같이 fetch 절로 서버 데이터를 불러 왔었다.export const callGetMemberAPI = ({memberId}) => {    const memberRequestURL = `http://localhost:8080/api/v1/member/${memberId}`;    return async (dispatch, getState) => {        const result = await fetch(memberRequestURL,{            method : 'GET',            headers: {          .. 2025. 2. 20.
React / Spring, 서버에서 받은 jwt 토큰 정보 프론트에서 유지 시키기 오늘도 일단 해결한 내용을 복습겸 적어 보겠다. 해결하기 전 기록은 없으니 이렇게라도 적어두기. 일단 전체적인 흐름은[1. 로그인 → 2. 서버로 데이터 전송 →  3. JWT 토큰 및 기타 데이터 반환 → 4. 프론트에서 받아서 decoding(토큰 복호화) → 5. 토큰 데이터를 이용하여 프론트에서 사용하기] 순서이다. 오늘 문제가 됐던 건, 4~5 번 사이에서 발생되었다.로그인 하면 토큰이 반환되고, 메인 화면으로 이동하는데 그때 토큰은 들어 있지만, 새로고침을 하는 순간 토큰 정보가 없어지는 문제였다.    const onClickLoginHandler = async () => {        const isLoginSuccess = await dispatch(callLoginAPI({ form .. 2025. 2. 19.
Spring Security / jwt 구현 후, React-Redux 환경, 로그인 연결 복습 Spring Security / jwt 토큰을 이용한 '로그인'을 postman으로 검증 후, 바로 프론트 단과 연결하였다. React 환경으로 작업을 하는데, 수많은(코드 복호화 안 됨, 응답 못함 등등...) 에러가 있었지만.... 당시엔 수정하느냐고 기록을 하지 못하였다. 그리하여 오늘은 복습 겸 어떤식으로 구성했는지 남겨보려고 한다.일단 서버에서 인증 성공 후 토큰을 생성을 위한 onAuthenticationSuccess 메소드에서 프론트에 넘겨줄 값을 담아준다.@Configurationpublic class CustomAuthSuccessHandler extends SavedRequestAwareAuthenticationSuccessHandler { @Override public vo.. 2025. 2. 18.
Spring Security - jwt (회원가입 / 로그인) 에러 수정 그간 정처기 시험 준비로 약 한 달간 블로그를 작성하지 못하였다. 아쉬운대로 학원에서 22시까지 복습, 그 이후에 시험 준비를 하였다. (나름 열심히 살았다.) 아직 실기가 남았지만, 그 전까지 빡시게 기록해보려고 한다.이번 프로젝트에서는 어쩌다보니 회원가입 / 로그인 기능을 맡게 되었는데,  스프링 시큐리티와 세션 방식이 아닌 jwt 토큰 방식으로 구현하게 되었다. 회원 가입은 오랜 시간 걸리지 않고, 암호화 하여 insert 하는 데 성공하였다. 하지만 로그인 시, jwt 토큰이 생성되지 않는 문제가 내 발목을 잡았다. 아직 프론트 단 연결 전, postman을 이용하여 테스트를 진행했다. 위 사진과 같이, 200ok 싸인과 응답 메시지가 내가 설정한대로 객체 형태로(key, value) 반환은 되고.. 2025. 2. 17.
Rest - API 기초 연습 (@RestContoller = @Controller + @ResponseBody) 스프링 부트 환경에서 Controller를 생성했다.  기존 지식으로 MVC 패턴에서 Controller는 data 처리와 view까지 반환을 했었다. 하지만 React 활용 전, Rest-API에서의 Controller는 data 처리만 하면 된다고 한다. 일단 view 페이지 없이 기존 방식대로 url로 접근을 해보았다. 사진과 같이  RequestMapping으로 response 설정해주고 url 확인이 가능한 GetMapping 어노테이션으로 hello를 설정한다. return 값으로  hello world!!! 라는 문자열을 전달하는데, 기존 대로라면 view 페이지를 설정해야 한다.(예를 들어 hello.html) 이렇게 설정하면 당연히 경로를 찾을 수 없는 404 에러가 출력된다. 스프링은 .. 2025. 1. 15.
JPA 초급 공부 (manager / transaction / getSingleReulst()) 등.. JPA 공부 중, 기본적인 내용이지만 기록하기 일단 JPA란 MyBatis의 상위 개념이 아니라 MyBatis와는 다른 느낌의 ORM(Object-Relational Mapping)이다. 간단하게 복잡한 쿼리나 특정 데이터베이스 기능을 활용해야 하는 경우 MyBatis가 더 적합하고,데이터베이스와의 상호작용을 간소화하고 싶다면 JPA를 사용하는 것이 적합하다.(여러개의 조인이 들어간 복잡한 Select 구문은 mybatis가 유리하고,각종 DML 구문 (insert , update , delete)는 JPA가 유리하다.) 결론적으로 둘을 모두 사용하는 게 효율적!오늘 공부한 내용은 JPA 초급 사용하기.... 뭐가 안 되다 됐다 가 아니라, 그냥 복습할 겸 적어본다. test 클래스에서 insert 해주.. 2025. 1. 7.
반응형