Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
mirusu400 opened this issue Aug 5, 2022 · 2 comments
Open

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

mirusu400 opened this issue Aug 5, 2022 · 2 comments

Comments

@mirusu400
Copy link

@Transactional(propagation=Propagation.REQUIRED)
async def create_user(
self, email: str, password1: str, password2: str, nickname: str
) -> None:
if password1 != password2:
raise PasswordDoesNotMatchException
query = select(User).where(or_(User.email == email, User.nickname == nickname))
result = await session.execute(query)
is_exist = result.scalars().first()
if is_exist:
raise DuplicateEmailOrNicknameException
user = User(email=email, password=password1, nickname=nickname)
session.add(user)

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

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

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

@teamhide
Copy link
Owner

teamhide commented Aug 10, 2022

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

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

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

@teamhide
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants