본문 바로가기
Web - 백엔드/Node.js

[Node.js] Passport 모듈을 이용한 로그인 구현 3 - 현재 로그인된 유저 보기

by 미래문 2019. 1. 29.
반응형


 

 

이전 포스트 보러가기

 

[Node.js] Passport 모듈을 이용한 로그인 구현 2 - 로그인 구현

이전 포스트 보러가기 [Node.js] Passport 모듈을 이용한 로그인 구현 1 - 모듈 설치 / 준비 Node.js 모듈 중에는 Passport라는 모듈이 있습니다. 이 모듈을 사용하면 로그인 시에 인증을 보다 쉽게 구현할

futuregate.tistory.com

 

이어서, 로그인했을 때 생성된 jwt를 통해서 현재 로그인된 유저의 정보를 받아와 보도록 하겠습니다.
/routes/api/users.js에 내용을 추가합니다.

/routes/api/users.js

상단 모듈 선언부분에 passport모듈을 추가로 선언합니다.

const passport = require('passport');

다음, 새로운 라우팅 코드를 추가합니다.

router.get('/current', passport.authenticate('jwt',
{
    session: false
}), (req, res) =>
{
    res.json(
    {
        id: req.user.id,
        name: req.user.name,
        email: req.user.email,
    });
});

만약 get 방식으로 /current 디렉터리에 접근하면, passport모듈에서 jwt을 이용해서 현재 로그인된 사용자의 정보를 알아오는 방식입니다.

포스트맨으로 테스트해보겠습니다. 먼저 로그인부터 다시 실행합니다.

 

로그인에 성공하면 나오는 token값을 클립보드에 복사해 둡니다.
다음으로, get방식으로 전송방식을 변경한 뒤에, 주소를 localhost:5000/api/users/current 로 입력하고 send를 눌러봅니다.

 

다음과 같은 결과가 출력됩니다.

 

권한이 없다고 나오는것인데요, 그 이유는 저희가 /current에 접근할때 jwt값을 넘겨주지 않았기 때문입니다.

포스트맨에서 header 탭을 클릭하여 key값을 Authorization 으로 하고 위에서 복사했던 jwt값을 붙여넣기 합니다.

 

send 버튼을 누르면 아래와 같이 결과가 나오는 것을 확인 할 수 있습니다.

 

회원 가입했을 때 입력했던 이름과 이메일주소가 잘 나오고 있는것을 볼 수 있습니다.
이렇게 해서 현재 로그인된 사용자의 정보를 가져올 수 있는 것입니다. 나중에 게시물 작성 등에서는 위에 나온 사용자의 id 값을 저장해 두었다가 사용할 수 있습니다.

반응형

댓글