teamhide / fastapi-boilerplate

FastAPI boilerplate for real world production
1.07k stars 170 forks source link

비밀번호 암호화 기능 추가 #8

Open mirusu400 opened 2 years ago

mirusu400 commented 2 years ago

https://github.com/teamhide/fastapi-boilerplate/blob/75c8c82699dd5e3223e8a31fc4fdcbe0f17c5233/app/user/services/user.py#L34-L49

위 소스코드 부분이 사용자를 추가하는 테스트 API 부분인데, 아무래도 비밀번호를 평문으로 저장한다는 것이 좀 걸리네요..

token_helper.py로 JWT 처리에 대한 로직도 있고, AuthBackend를 통해서 Authorization 까지 체크하는 기본적인 보안 기능을 제공하는데 기왕 하는김에 비밀번호 암호화 기능도 추가하는 건 어떤가 싶어 제안해 봅니다. (특히 국내에선 비밀번호 암호화가 법적으로 필수라서 꼭 추가했으면 좋겠네요)

그리고 추가적인 제안인데 JWT 토큰을 사용하는데 API단에서 예시가 없어서 로그인 시 JWT토큰 발급 / Bearer를 통한 JWT 토큰 사용 예시 API까지 추가했으면 하는 바램입니다

teamhide commented 2 years ago

사람마다, 회사마다 추구하는 아키텍처가 다르기 때문에 어느정도까지 본 프로젝트에서 코드상으로 제공해줘야 하는지 고민하던 부분이긴 합니다. 원래 공통코드를 포함하여 서버를 구동할 때 꼭 필요한 코어까지만 제공하려고 했으나, 간단하게 CRUD까지는 제공하면 괜찮겠다라는 생각에 서비스까지만 레이어를 나누고 그를 활용하는 코드를 넣어뒀습니다.

하지만 말씀주신 의견을 생각해보니 프로젝트를 접하는 사람마다 다를 수 있겠다는 생각이 드네요. 어느정도 경험이 있는 개발자라면 해당 프로젝트 코드를 원하는대로 커스터마이징하여 사용할 수 있겠지만, 주니어 입장에서는 본 코드가 Best practice라고 생각하고 개발할 수 있겠다는 느낌이 듭니다.

시간날 때 의견주신부분 코드로 추가하여 넣어두겠습니다. 좋은 의견 감사합니다 :)

teamhide commented 2 years ago

암호화 기능을 제외하고 로그인/토큰 검증/토큰 재발급 API 추가해서 푸시해놨습니다. /docs로 들어가서 확인하실 수 있을거에요. 나중에 조금 더 다듬을게요.