Day8 - 팀 미니 프로젝트 수행

pds·2022년 11월 18일
0

Project

목록 보기
2/2

팀 미니 프로젝트 역할 수행 일기


프로젝트 주제

  • 다이소 물품 구매 리뷰 남기기, 공유 서비스

해야할 것

  • 사용자 인증(로그인, 회원가입 등) 구현하기

흐름

  • 로그인 시 jwt access token을 클라이언트로 쿠키로 발급해준다.

  • 쿠키를 이용해 인가가 필요한 요청이나 페이지에 대해서 서버로 검증 요청을 보내 결과를 얻고 그에 맞는 처리를 해줘야 한다.


그냥 들었던 생각

프론트와 백엔드가 같은 출처인 단일 앱이라 세션 방식도 괜찮을 것 처럼 보였다.

아예 뷰 템플릿 엔진 위주로 구현하는 형태였다면 더 그랬을 것 같다.


그냥 들었던 생각2

토큰 구현할 떄 항상 로컬스토리지를 이용했고 인가가 필요한 요청마다 Authorization 헤더에 토큰을 실어 요청을 했던 것 같다.

플라스크가 낯설어서 그런진 모르겠는데 쿠키로 구현하는게 훨씬 쉽긴한 것 같다.


쿠키 만들기

라이브에서는 클라이언트 쪽에서 로그인 성공 시 쿠키 만들게끔 했는데 본인은 로그인 요청 성공 시 서버에서 만들도록 설정함

secure, httponly를 적용하진 않았지만 적용한다고 하면 명목상으로 클라이언트 쪽 사용자가 어떻게 해보기 힘들기 때문에 서버에서 관리가 좀 더 안정적이지 않을까 생각했음

어차피 쿠키는 서버로 요청 보낼 때 알아서 넘어간다! 굳이 자바스크립트에서 다룰 필요 없다고 생각함


token = jwt.encode(payload, get_secret_key(), algorithm='HS256')
        resp = make_response(jsonify({'result': 'success', 'token': token, 'msg': '인증 성공'}))
        resp.set_cookie('accessToken', token)
        return resp

대충 이런식으로 쿠키 설정해서 응답해주었다.


이미지 서버 만들기

미니프로젝트라 하더라도 서비스 특성상 본인이 파일로 가지고 있는 이미지(직접 찍은)를 업로드 하는 형태가 적절할 것이라고 판단했고
이를 저장하기 위해 이미지 서버를 따로 만들기로 했다.

사실 S3사용, 애플리케이션 디렉터리에 넣기, 바이트로 직접 db에 저장 등 선택지가 있지만

S3는 보안키 문제가 있어 백엔드로 넘겨서 s3 모듈 써서 해야되는데 공부할 시간이 부족하기도 하고 프로젝트 코드에 포함시키는 것은 기본에 충실하고자 하는 우리팀의 모토와 부합하지 않아 패스했다.

애플리케이션 디렉터리에 넣기는 쉽지만 부적절한 방법이기에 패스했다.

db에 직접 바이트로 넣는 방법도 보통 사용하지 않기 때문에 패스했다.

그래서 그냥 스프링으로 직접 구현하기로 했다.



우리팀은

구현하다 문제가 발생했을 때 스스로 해결해본 뒤 문제를 공유하고 같이 디버깅해보며 문제지점을 찾고 문제 원인을 파악한 후 해결방법을 찾아 해결해나가는 식으로 처리하고 있다.

그래서 아직까지는 필수 요구사항 개발 흐름에 큰 문제 없이 순항하고 있는 것 같다.

profile
강해지고싶은 쭈니어

0개의 댓글