Inflearn Community Q&A
로그인 시 쿠키세션에 대하여 질문있습니다.
Resolved
Written on
·
338
·
Edited
1
안녕하세요. 강사님
좋은 강의 감사드립니다.
로그인 시 인증 방법에 대하여 질문있습니다.
1. 로그인 할때 session 식별자를 쿠키와 함께 클라이언트에 전해주는 코드가 어떤 것인지 궁금합니다.
로그인시 local-strategy가 실행되면 맨 마지막에 serializeUser에 user.id만 세션에 저장해 놓고 필요할때마다
deserializeUser에서 userid를 뽑아올 수 있잖아요? 여기까지는 이해했습니다.
그런데 로그인을 성공하면 어떤 코드에서 cookie가 session식별자를 프론트에 전달해주는지 궁금합니다.
main.ts에서
app.use(cookieParser());
app.use(
session({
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
},
}),
);
app.use(passport.initialize());
app.use(passport.session());이 코드를 설정했기 때문에 로컬 전략 후 자동으로 쿠키를 통해 세션을 프론트에 전달해주는 것인지 궁금합니다.
2. 웹이 아닌 모바일 앱에서 인증 시 백앤드 서버쪽에서 express-session과 passport를 사용하여 인증하는 것이 일반적인지 궁금합니다.
모바일은 쿠키가 없기 때문에 쿠키세션은 사용하지 못하더라도 쿠키말고 body에 session 식별자를 보내주어서
인증이 가능하지 않을까 라는 의문이 들었습니다.
구글 검색결과 "된다 or 안 된다. 모바일앱에서는 passport나 session을 사용하지 않는 것이 좋다." 라는 의견이 있어서 헷갈립니다.
모바일앱에서는 passport와 session을 사용하지 않고 jwt를 사용하는 것이 일반적인지 의견을 듣고싶습니다.
Quiz
NestJS에서 Guard의 주요 역할은 무엇인가요?
데이터 유효성 검사
서비스 로직 실행
예외 처리
권한 및 인증 확인
Answer 1
0
req.login(super.login)을 할 때 응답 헤더에 쿠키가 심어집니다. local-auth.guard.ts에 있습니다.
앱에서도 세션 토큰을 body를 통해 전달해서 로그인하는 게 가능은 합니다. 그게 사실 토큰 방식이기도 하고요. 하지만 그런 식으로 우회해서 쿠키를 쓰는 것보다는 액세스토큰/리프레시토큰으로 하는 게 모바일 앱에서는 더 일반적이기는 합니다. 액세스토큰/리프레시토큰을 jwt로 구성할 수 있고요.
아뇨 passport는 모바일앱에 써도 됩니다. passport는 인증을 위한 라이브러리지 "웹" 인증만을 위한건 아닙니다. passport-jwt 쓰셔도 됩니다.






감사합니다 강사님. 2번 답변이 session 뿐만 아니라 passport도 적용되는 것이죠?
passport에는 passport.session 뿐만 아니라 passport-jwt도 있고 여러가지 있던데 passport있는 모듈 자체도 모바일 앱에는 적용하지 않는 것이 일반적인가요?
모바일앱에 jwt를 쓰는 건 봤어도 passport-jwt를 사용하는 건 잘 못 봐서요...