TIL 4/21 인증,인가
서류 합격한 곳에서 면접 전 과제를 내주었는데 오래간만에 코드를 치면서 중간중간 막힌 부분들을 정리해보려고 한다.
로그인 인가를 구현하기 위해서 UseGuard에 사용이 될 Strategy를 구현
PassportStrategy를 통해 헤더에 있는 Authorization을 찾아내서 jwt 검증을 하는 Strategy를 구현 만약 jwt가 유효하면 validate함수가 실행되어 req.user로 name, id를 받아오게 설정했다.
로그인시도 할 때 token을 header에 setHeader로 넣게 구현을 했는데
res와 req를 controller단에서 직접 사용하는 것은 nest를 올바르게 사용하는 방법이 아니라는 말을 들었다.(도움을 준 내 배캠 동기에게)
데코레이터로 만들어 사용을 해야 한다는데 이 부분은 더 알아봐야겠다.
UseGuards를 통과한 로그인 정보를 가져오는 데코레이터
header에 있는 JWT에는 유저 검증을 위한 정보가 담겨있다.
이 정보를 꺼내기 위해서는 Strategy에서 validate를 통해 req.user로 넘겨주는 데이터를 사용해야 하는데
이번에는 직접 req.user가 아닌 데코레이터를 만들어서 사용이 됐다.
ExecutionContext를 통해 데코레이터가 작동이 되는데 자세하건 공식 문서를 통해
https://docs.nestjs.com/fundamentals/execution-context
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea
docs.nestjs.com
요약하면 ArgumentsHost(req, res, next 배열 캡슐화)를 상속받아 더 많은 기능을 제공하는데
인자, Controller의 어떤 메서드에서 실행되고 있는지의 정보를 확인