2024/12 15

팀플) 배포 준비. 도메인 -> 자동배포 구현

가비아에서 도메인 구입, 이번엔 안까먹고 타사 네임서버 작성함. (dnszi.com 네임서버 작성)오케이 구매 완료함.그니까 도메인 관리는 dnszi에서 할거임.여튼 구매 했으니까 다음으로는 배포 테스트에 대한 전략이 필요함.내가 배운대로 보자면 main이나 master브랜치 밖에 없었어서 push 할 시에 자동 배포 빌드가 이루어진건데 지금은 굳이 따지자면 협업중이고 그런식으로 접근하면 위험하다는 생각이 듦.그래서 이걸 develop 브랜치에서 파생하는 브랜치를 하나 더 생성하고 여기서 배포에 대한 테스트를 진행하면 좋겠다가 결론임.그래서 staging이라는 브랜치를 생성해서 develop을 pull 해왔음.이제 여기서 내 맘대로 좀 주물러보면 됨. 우선은 도커파일이 준비가 되어야하니까..우선은 도커파..

팀플) JWT 엑세스 토큰 쿠키로 관리.

리프레시 토큰은 Redis에서 중앙화 해서 관리하고, 엑세스 토큰은 지금 브라우저 스토리지로 관리중임.허나, 스토리지는 XSS공격에 굉장히 취약함. 사실 소셜 로그인이고 빼갈 정보가 이메일정도 밖에 없어서 대충이렇게 하려고 했는데 그래도 이왕하는거 완벽하게 하고 싶다는 생각이 들어서 쿠키를 도입하기로 함.그래서 백엔드에서 헤더에 json을 태워보내던 방식을 쿠키로 고쳤음.백엔드 수정사항 ->CustomOAuth2SuccessHandler 클래스에서 onAuthenticationSuccess에 기존 헤더에 JWT 태워서 리턴하던 로직을 쿠키로 보내주는 것으로 변경 (setHttpOnly 설정으로 XSS 공격에 대한 방어 설정함)AuthController클래스 생성해서 인증로직과 member 로직 완전 분리..

팀플) 디테일 수정 사항

프론트useUserLoction 함수 수정날씨 데이터 새로고침 문제 해결유저 위치 저장, 수정 로직 이슈 해결백엔드위치 삭제시 만약 즐겨찾기라면 초기화 로직 구현자잘한 문제가 발견될 때 마다 재깍재깍 수정중.아 그리고 첫 로그인 사용자에 대한 처리가 있으면 좋겠다는 생각이 들어서 어떻게 구현할지 고민을 좀 해봤는데 첫 로그인이라면 JWT에 뭐 new customer 같은 값을 태워 보내주면 되지 않을까라는 생각을 함.하는김에 이상하게 userId 태워보내던거 제대로 JWT 토큰에 추가함.첫 로그인 사용자에 대한 처리 함.이렇게 하고 기존 사용자에 대한 알람도 처리함.어떻게 했냐면 JWT에 isNewUser라는 참 거짓 하나 추가해서 첫 로그인인지 아닌지 판별하게끔 했음.여기 보면 이게 트루라서 작동한거...

팀플) 오늘 한 것.. (JWT 완전 도입 완료, 세세한 수정, 상세 페이지 CRUD)

일단 develop으로 머지 시키고 개꿀잠을 자버림. (학원 못감, 사실 너무 늦게 잔 것도 있고 무조건 해결하고 자야겠다 싶어서 감기기운도 좀 있고 머리도 아픈데 끝까지 붙들고 JWT 모든 문제 해결 이후, 기존 로직들이 유지되게끔 수정하고 잠.)근데 이제 팀원들이 머지하고 난 이후 서버가 돌아가지 않는다고 연락이 옴.디스코드로 한 4시간 붙들고 얘기를 했는데, 나는 아무문제 없이 잘 작동하는데 팀원들만 안되는 기이한 상황이였음.여기 보면 당시 어지러운 상황이 좀 남아있긴한데,,결론은 윈도우랑 맥의 차이기도 했고,,여튼 JWT인증을 위해서 나는 뭐 영어로 우리팀 개짱짱맨이고 아무도 막을 수 없으셈 이런걸 영어로 작성해서 Base64인코딩한 값을 넣었었음. 이 과정에서 맨 마지막에 =이라는 문구가 하나 ..

Swagger와 비슷한~ Flask-restx 파이썬 프로젝트에 적용하기

최근 스웨거를 배웠음. 그래서 내 파이썬 프로젝트에 적용해서 경로 명세서를 제공하면 아주 좋겠다는 생각이들었음,그래서 보니까 파이썬에는 Flask-restx라는게 있더라고?적용하러 가보자.pip install flask-restx && pip freeze > requirements.txt설치부터 진행했음.설치 이후에는 routes.py에서 블루프린트에 대한 설정을 추가해줌.# Blueprint 생성main = Blueprint('main', __name__)기존엔 이거밖에 없었는데 from flask_restx import Api, Resource, reqparse# Flask-RestX API 객체 생성api = Api(main, version='1.0', title='Astronomical Event..