본문 바로가기

포스코x코딩온48

3차 프로젝트 디벨롭 (https, socket.io, express.js, react) - 경제적인 버전 서버마다 인스턴스가 있는 경우에는 그냥 호스트 별로 모두 443번 포트를 이용하면 되니까 https 연결이 모두 가능한데 나는 돈이 없기 때문에 t2 micro 인스턴스 하나에서 어떻게든 socket.io, express. js, react(정적파일)를 nginx를 이용하여 돌려보려고 했다. 다음은 시행착오의 과정이다. 실험1. 가비아 도메인 + acm + Route 53 + Ec2 roadbalancer 일단 가비아에서 500원짜리 도메인을 산 다음에 acm(ssl)을 발급받고 Route 53에서 DNS 처리를 해준다(네임서버 설정). 그리고 로드밸런서로는 80번포트의 요청을 자동적으로 443번 포트로 리다이렉트 해준다. 여기까지는 괜찮은데 인스턴스 한개, 즉 443번 포트가 하나밖에 없는 경우에는 n.. 2024. 4. 22.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -7 메소드 뿐 아니라 필터에서 걸려서 예외처리가 되는 경우에는 내가 만든 예외처리가 적용되지 않고 default response인 403에러에 body에 아무것도 주지 않았다. 물론 이렇게 보내면서도 충분히 할 수 있지만 프론트 분들이 불편할 것 같아서 필터도 에러 리스폰스를 넣는 게 좋겠다는 생각이 들었다. 그래서 구글링 해서 찾아보니까 필터단에서는 따로 처리를 해줘야 하고, response 객체에 setStatus()와 getWriter().write() 메소드로 필터 단에서 body를 응답할 수 있다는 블로그를 보았다. https://blog.naver.com/PostView.naver?blogId=qjawnswkd&logNo=222303565093&parentCategoryNo=&categoryNo=.. 2024. 3. 22.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -6 api 어드레스를 작성하면서 한 가지 의문이 들었다. 일단 프론트와 연동을 안해놔서 그런가 그동안 별 생각 없었는데 내가 짠 api에서 클라이언트 측은 내가 이 사용자라는 것을 증명하기 위해서 userIndex 또는 userid를 보내야 한다. 이게 만약 세션에서는 그냥 세션에 있는 userid 정보를 이용하면 된다. 하지만 restAPI에서는 계속 정보를 줘야한다. 게다가 어떤건 index, 어떤건 id를 줘야해서 조금 헷갈릴 것 같았다. 다만 이와 똑같이 모든 요청마다 userid가 담겨있는 정보를 보내는 곳이 존재한다. 그건 accessToken이다. access token에는 마침 subject에 userid가 담겨있기도 하다. 유저 정보가 필요한 모든 요청에 access token을 디코딩해서 .. 2024. 3. 19.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -5 논리삭제를 구현했다. 논리삭제의 대상은 유저와 코디, 옷장으로 정했다. 좋아요 같은 경우는 쌓인 데이터가 별다른 기능을 하지 않을 것 같았고, 좋아요를 취소하는 경우는 대부분 잘못 누른 것이기 때문에 쌓인 데이터로 무엇을 할 수 있을 거라고는 생각하지 않기 때문이다. 그래서 acitve column을 하나씩 만들고 default를 true로 설정, 삭제 시에는 active를 false로 하고, 모든 fetch 요청에서는 active가 true인 값만 가져오게끔 하면서 구현할 수 있었다. 이거 하면서 회원탈퇴하고 다시 회원가입 하는 경우, 같은 아이디로 회원가입이 불가능 했던 걸로 기억하는데 그게 논리삭제 때문이지 않을까 생각했다. 그렇게 게시글이나 코디같은 경우도 회원 탈퇴를 하는 경우 active = .. 2024. 3. 18.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -4 알고보니까 지금까지 구현한 jwt는 내가 좀 이상하게 만든 거였다. oauth2.0이 jwt를 지원해준다고 해서 이거 썼는데 이건 구글, 카카오 로그인 같은데서 쓰는 용도로 만들어진 프로토콜이고 나는 그냥 커스텀으로 만들어서 써야 했다. 어쩐지 오류 투성이더라... 그리고 chatGPT도 거짓말 투성이다. 걸러들어서 다행이지. 신포도 할 뻔했다. access token은 oauth에서, refresh token은 jjwt에서 만든 것까지는 눈치 못채고 , 이게 당연한 거라고 생각했었는데 (oAuth에서는 당연하다는 것 같다.) 저거 구현할 수 있는 기발한 방법을 찾고자 hasRole 함수를 썼는데, role 자체를 전부 인식을 못해서 403에러가 떴다. 물론 오류코드는 아무것도 안 알려줬다. 그래서 조금.. 2024. 3. 13.
[포스코x코딩온] 풀스택 부트캠프 4차 프로젝트 -3 주말동안 JWT 배워와서 적용해봤다. 일단 기본적으로 JWT같은 경우는 Express에서 구현해봤었기 때문에 작동하는 구성방식은 대충 알고 있었는데 자바에서는 Spring Security가 대신해줄 수 있다는 란가 센세의 강의를 보면서 내 프로젝트에 적용했다. 근데.. 이사람 자기는 강의마다 최신화가 굉장히 잘 된다고 한 것 치고는 deprecated된 함수들이 되게 많아서 하나씩 구글링하면서 적용했다. 다만 한가지 주의할 점이 이 사람은 embedded database인 H2를 이용했지만 나는 jpa를 이용해야 한다는 점이었다. 근데 sping boot가 복잡하긴 하지만 일단 매력적인게 설명은 잘되어있다. 이런식으로 User Entity가 미리 설정되어 있고 이걸 UserDetails을 implemen.. 2024. 3. 11.