본문 바로가기

캡스톤 설계 [건물별 소통 플랫폼 BBC]

백엔드 로컬로그인 Passport로 Jwt Strategy 전략및 UseGuard데코레이터로 인증 및 인가 npm install @types/passport-jwt 필요 패키지 설치 strategy를 자동으로 실행해줄 guard 작성 payload 파일 따로 생성 다른 모듈에서도 사용하기 위해 injectable 데코레이션 사용해서 strategy 작성 아래 라우터로 요청에 user가 들어가는지 확인 잘 담기는것을 확인 ! 더보기
백엔드 로컬로그인 JWT토큰 발급 받기 npm install @nestjs/jwt @nestjs/passport passport passport-jwt --save jwt 및 passport 관련 패키지 설치 user 컨트롤러에서 로컬 로그인 라우트 생성 nest g module auth nest g controller auth nest g service auth 로그인과 인증 인가를 맡을 auth 모듈 생성 passport 모둘과 configmodule jwt모듈 설정과 user모듈과 auth 모듈간의 순환참조모듈 문제를 해결해줄 forwardRef 함수 import해주기. auth모듈에서 userService를 사용하기 위해 exports user모듈과 auth 모듈간의 순환참조모듈 문제를 해결해줄 forwardRef 함수 import해주.. 더보기
백엔드 : 환경변수로 저장한 jwt 비밀키를 못읽어 오는 에러 분명 코드상에는 문제가 없으나 비밀키를 읽지 못하는 에러가 발생 . . . console.log로 디버깅을 한 후 가운데 코드이후로 콘솔이 안찍히는것을 확인하고 jwtserice에서 토큰을 생성하지 못하는것을 발견. . . . 원인 : 환경변수로 관리하는 비밀키를 읽어오지 못함. . . 해결 : auth module에서 ConfigModuel을 import 해줌 . . . 환경 변수를 사용시 appmodule에서만 ConfigModuel를 import 하면 전역적으로 사용을 할 수 있었다고 착각을 하였다. 각 모듈별로 ConfigModuel를 import 해야 해당 모듈에서 환경변수를 사용할 수 있다. . . 아마 전역적으로 사용하는 법이 있을것 같지만 우선 기본적인 기능 구현이 끝난 뒤 리팩토링 하는 .. 더보기
백엔드 authmodule과 usermodule간의 의존성 에러 jwt 로그인 구현중 의존성 에러 발생 새로운 auth 모듈을 생성하고 코딩한 후 토큰이 잘 발급되는지 확인하는 과정에서 의존성 에러가 발생. 원인 : user모듈에서도 auth 모듈의 서비스를 이용하고 auth모듈에서도 Userservice를 이용해서 순환 참조 모듈의 문제로 원활한 DI 가 안된것 같다. 해결 : forwardRef(() => UserModule), forwardRef(() => AuthModule) forwardRef 함수를 사용해서 순환모듈 문제를 해결. 더보기
NestJS request LifeCycle[요청주기] 출처 : https://dkrnfls.tistory.com/83 출처 :https://velog.io/@haron/NestJS-Lifecycle-Events 더보기
백엔드 Interceptors & AOP 패턴 Interceptor는 @injectable() 데코레이터로 주석이 달린 클래스이며 NestInterceptor 인터페이스를 구현해야한다. 또한 AOP(aspect oriented Programming,관점지향프로그래밍)에서 영감을 받은 여러가지 유용한 기능들이 있다. 즉 컨틀롤러가 시작할때와 끝났을때 각각 특정 기능들을 수행할 수 있다. 하지만 주로 컨트롤러 끝났을 때의 시점을 주로 사용한다. . . success.interceptor.ts 생성 후 아래와 같이 커스텀 user 컨트롤러단 전체에 인터셉터 적용. 성공시 커스텀 한 형식으로 응답을 주는것을 확인할 수 있다. 더보기
백엔드 Exception filter 내가 백엔드와 프론트엔드 둘다 개발을 하기에 에러처리에 대한 응답은 기본적으로 가시성이 좋게 약간의 커스텀만 하여 Nest가 던저주는 코드와 메세지 그대로사용할 예정이며 추후 개발시 커스텀이 필요한 경우 exception filter를 세부적으로 커스텀 처리할것이다. . . 우선 개별적으로 필터는 넣는것이 아닌 전역적으로 필터를 넣어준다. http-exception.filter.ts 파일을 생성. 기본적으로 errors는 string 아니면 object로 타입이 뜬다. object는 nest 자체적으로 던져주는 에러를 의미하며 string은 개발자 자체적으로 던져준 에러이다. 위와 같이 커스텀하여 개발자(나)가 자체적으로 던진 에러는 string으로 받아서 처리하고 이외에는 object로서 비구조분해할당.. 더보기
백엔드 해쉬된 비밀번호 데이터 베이스 저장시 에러 데이터 베이스에 해쉬한 비밀번호 값을 저장하려고 하니 에러가 남. 데이터베이스와 엔티티의 가용범위를 늘려줌. 해결. 더보기