breaking-dope / breaking-backend Goto Github PK
View Code? Open in Web Editor NEW브레이킹 - 모두가 기자가 된다
브레이킹 - 모두가 기자가 된다
기존에 main 브랜치에만 issue와 PR 템플릿이 적용되어 있어서, 해당 내용들을 dev 브랜치에도 복사합니다.
기존에는 예외가 발생하면 catch문에서 null로 대입을 시켜준 방식이였으나, 현재 커스텀 예외처리로 강제 종료되는 현상이 발생하여 이를 수정하고자 함.
로그인 시도 시 email부분이 null로 담겨져야하나 강제종료되어 클라이언트쪽에 500에러가 발생함.
try-catch문을 배재하여 종료되는상황이 없을 것으로 예상됨.
To Do List
고유한 식별코드를 받는다고 하지만, 우연의 일치에 의해, 두 플랫폼간 같은 코드가 발행되고 이 코드가 회원가입 되버리면 두 사용자는 하나의 식별값은 갖게되는 보안사고가 발생됨.
merge 과정에서, DTO에 balance를 추가 했던 것이 사라졌습니다.
마틴(@Martin0o0 )이 전체 틀을 작성하고, 오프라인으로 만나서 리뷰하면 될 것 같습니다.
기존 api 시트와 controller mapping이 일치하지 않는 문제 발생
설계 오류.
기존 잘못 작성되었던 맵밍 url을 수정하여 api 시트와 통일합니다.
테스트 중, validate 가 정상적으로 일어나지 않는 것을 확인.
정규식에 표현이 조금 빠진 것을 확인했습니다.
다음 정규식으로 모두 교체합니다.
전화번호 검증 : ^\d{2,3}-\d{3,4}-\d{4}$
이메일 검증 : ^[_a-z0-9-]+(.[_a-z0-9-]+)@(?:\w+\.)+\w+$
닉네임 검증 : ^(?=.[a-z0-9가-힣])[a-z0-9가-힣]{2,16}$
현재, @PreAuthorize("isAuthenticated()") 어노테이션을 사용시, jwt 토큰없이 접근한다면 403 Forbbiden을 반환해야하나, 200 Ok를 반환하는 심각한 문제를 발견한 상황.
Post Api에서 jwt 없이 등록을 시도하면 내부 로직은 실행되지 않으나, Response Body가 없는 200ok가 반환되는 버그를 발견함.
수정 후, 정상적으로 403 Forbbide이 응답될 것이라고 생각함.
맛동산(@MinwuTheQuant )이 전체적으로 틀을 작성하고, 다같이 오프라인에서 리뷰하면 될 것 같습니다.
기존에 조회 기능을 JPQL로 구현하려 했으나,
복잡한 join과 조건문 사용과, 동적 쿼리 사용이 제한적이라서 힘들었습니다.
그래서 Spring Data JPA 와, QueryDSL을 사용해서 정렬, 세부 필터 기능을 구현 예정입니다.
마팅님을 필두로 기능 구현을 마치고, 유저 정보를 받아오는 방법을 팀원들과 공유해주시면 좋을 것 같습니다.
적용된 Error response body 예시.
{ "code": "BSE000", "message": "로그인이 필요합니다." }
요청 시에 디버깅을 위해서 HTTP 요청을 로그화 합니다.
자동로그인 시, 클라이언트 단에서 기본적인 유저 정보를 반환해주는 API가 필요합니다.
지금 API Sheet를 보니까, API 의 URL 구분이 좀 명확하지 않다는 생각이 듭니다.
얼추 다음과 같은 구분을 사용하면 어떨까 생각이 됩니다.
기존의 로직에서는 유효하지 않은 엑세스 토큰으로 로그인을 시도 시 에러를 반환하는 응답을 보내지 않아 사용자는 자세한 에러 내용을 볼 수 없었다.
또한, 서버 내부에서도 처리되지 않은 예외를 통해 심각한 버그를 초래할 수 있다.
클라이언트단에서 유효하지 않은 엑세스 토큰 혹은, 선택하지 않은 개인정보가 컨트롤러에서 정보를 추출할 시, 없다면 치명적인 에러를 반환하였다.
try-catch문을 통해 클라이언트단에서 예외를 명시적으로 볼 수 있을 것이며, 서버단에서는 동의하지 않은 정보를 강제로 취합하려고 할 때, 없다면 Null값으로 대체하여 사전에 버그를 방지한다.
Android에서 기존 유저에 대한 로그인 요청 시도시 발생한 응답 에러
기존 유저의 로그인 시도 시, 유저의 기본 정보가 반환 되지 않은 문제가 발생함.
정상적인 요청에 대한 정상적인 response가 될 것이라 예상.
QueryDSL로 다음을 구현합니다.
기존에 JPQL 로 작성을 하고 있었는데,
한계점들이 있어서 QueryDSL 학습 후 리팩토링 예정
리팩토링 중에 하이픈을 포함한 정규식을 잘못 기입했습니다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.