inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

deserializeUser 이해하기

passport/index.js로 이동

379

tnwjdrms

작성한 질문수 10

0

router.post('/login', isNotLoggedIn, (req, res, next) => {
//미들웨어 안에 미들웨어
//두번재 인자는 done이 전달해줌
passport.authenticate('local', (authError, user, info) => {
if (authError){ //없는 email일 경우
console.error(authError);
return next(authError);
}
if(!user){ //비번틀린경우
return res.redirect(`/?loginError=${info.message}`);
}
return req.login(user, (loginError) => { //passport index.js 로간다
if(loginError) {
console.error(loginError);
return next(loginError);
}
//세션 쿠키를 브라우저로 보내준다 -> 로그인된 상태
return res.redirect('/'); //로그인 성공
});
}) (req, res, next); //미들웨어 안에 미들웨어에는 끝날때 (req, res, next)붙입니다.

});

여기서 passport.authenticate('local'...) 을 하거나 req.login을 할때 어떤 이유로 passport/ index.js로 가서 찾는것인가요?

auth.js에는 passport에서 import 해준것이 아무것도 없는데 알아서 찾아가는 것이 궁금합니다

그리고 항상 그럼 폴더이름을 passport 로 파일은 index.js 로 해줘야 하는건가요?

mongodb mysql nodejs Sequelize

답변 4

0

tnwjdrms

authError가 done의 첫번째 오류라면 제가 저기서 //없는 email일 경우라고 주석을 잘못달았나 보네요.. 그럼 없는 회원이거나 비밀버호가 틀리면 다 여기에 걸리는 거네요?

답변 감사드립니다~😁

if(!user){ //비번틀린경우
return res.redirect(`/?loginError=${info.message}`);
}

0

제로초(조현영)

null 자리는 서버 오류 맞습니다.

logInError는 done은 첫 번째 인자 null 포함해서 req.logIn 중 발생한 오류 모두 포함합니다.

authError는 강좌에서 설명드렸습니다. strategy의 done에 들어가는 세 개가 각각 authError, user, info입니다.

0

tnwjdrms

답변너무감사합니다 답변보고 다시한번 천천히 과정을 복습하면서 많이 이해가 됐어요~

두개더 질문이 있습니다!

passport.serializeUser((user, done) => {
done(null, user.id); // 세션에 user의 id만 저장
});

여기서 done(null, user.id) 에서 null도 서버오류를 말하는건가요??

그리고 done을 만나 다시 (loginError) => { }이부분이 실행될때 저 loginError는 done의 첫전째인자인 null을 받는것 인가요 아니면 전체적인 이과정전에 발생한 오류가 있다면 받는것인가요?

return req.login(user, (loginError) => { //passport index.js 로간다
if(loginError) {
console.error(loginError);
return next(loginError);
}

두번째 질문은 이와 같은 맥락으로 여기서 authError은 어떤것을 받는건가요? 

passport.authenticate('local', (authError, user, info) => {
if (authError){ //없는 email일 경우
console.error(authError);
return next(authError);

0

제로초(조현영)

passport.use 할 때 localStrategy가 'local'이름으로 저장됩니다. req.login을 하면 serializeUser가 실행되게 등록되어 있고요.

폴더이름, 파일명이랑 상관 없습니다. 함수를 등록한 게 중요한 것이죠.

리눅스 노드 설치시 패키지

0

159

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

905

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2281

2

a[title] 질문드립니다

0

375

1

리뉴얼 강의 및 공부 방법

0

581

1

jwt decode

0

1128

1

node.js 교과서 3판 질문드립니다

0

391

1

passport와 jwt

0

432

1

리뉴얼 강의

0

417

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

353

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

481

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

505

2

nunjucks res.render('error'); 작동을 안합니다.

0

511

1

질문있습니다.

0

346

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3535

1

수업자료는 어디있나요?

0

366

1

질문 있습니디

0

235

1

multer 사용시 file 외 name값은 못받나용?

0

416

1

코드 중복 부분 질문드립니다.

0

298

1

api 만드는 이유 질문드립니다.

0

286

1

Strategy의 done에 대해 질문드립니다.

0

364

1

안녕하세요 fs 권한 관련 질문드립니다

0

448

1

시퀄라이즈 연결질문...

0

495

2

res.setHeader vs res.cookie

0

1786

3