inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Node.js 교과서 - 기본부터 프로젝트 실습까지

passport serializeUser/deserializeUser

deserialize 캐싱 구현 관련 질문.

해결된 질문

354

SILENMUS

작성한 질문수 12

0

안녕하세요~

deserialize 캐싱를 구현해보았습니다.

구현 하다보니 두가지 의문이 생겨 질문합니다. 

우선 아래는 제가 구현한 코드 입니다.

let users = [ ] ;

passport.deserializeUser((id, done) => {

    let result = users.indexOf(id);

    if (result === -1) { // result가 -1이라면 === 배열에 아이디 없다.

      User.findOne({ where: { id } }) // 유저 아이디가 있는지 db에서 검색해라.
      .then((user) => done(null, user)) // 검색이 성공했다면, 결과를 파라미터에
      .then(()=>users.push(id)) // 그리고 배열에 아이디를 추가해라.
      .catch((err) => done(err));

    } else { // result가 -1이 아니라면, 배열안에 아이디가 있다. 

      done(null,users[result]);

    }

  });

테스트 해봤는데 일단은 동작이 됩니다.

제가 궁금한 것은 

1. 배열의 indexof 함수가 동기인지, 비동기인지 입니다. 

2. 유저가 로그아웃을 하거나 , 브라우저를 종료해도 

배열안에 저장한 유저 아이디는 그대로 저장되어 있는데 ,

혹시 위와 같은 상황에서 발생할 수 있는 문제점이 있을까요?

( 제 지식으로는 딱히 문제가 될 것 같지는 않은데, 강사님의 의견이 궁금합니다. ) 

mysql nodejs javascript mongodb

답변 2

2

제로초(조현영)

1. indexOf는 동기입니다.

2. 로그아웃 시에는 저 배열에서 find나 findIndex 메서드로 찾아서 지워주셔야 합니다. 배열은 export const로 다른 파일에서 쓸 수 있게 해주시면 됩니다. 그리고 보통 캐싱에도 유효기간은 어느 정도 주는 것이 좋습니다. 정보가 너무 오래될 수도 있으니까요.

0

SILENMUS

감사합니다.

실제 서비스에서도 cluster를 사용하나요?

1

313

2

캐싱에 관하여

0

279

3

salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?

0

347

1

게시물 올리기 오류

0

408

1

캐슁 이후 로그인창

0

266

1

kakao passport 질문있습니다.

0

493

3

global객체 공유 질문드립니다.

1

417

1

서버가 죽어버리네요

0

1047

8

포링키 문제..

0

234

2

커넥션 플래시 설치문제

0

216

2

익스프레스 제너레이터? 설치문제

0

2586

6

redis 질문입니다.

0

305

1

9장 세션을 DB에 저장시 리다이렉션 오류 발생

0

874

8

프레임워크 선택에 관하여 질문이 있습니다.

0

300

3

시퀄라이즈 질문입니다 ! !

0

588

1

리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문

0

922

6

oAuth 질문입니다.

0

356

3

GCP 질문입니다.

0

366

1

Passport 모듈 로그인 구현관련

0

720

6

카카오 로그인 관련 질문입니다!!

0

606

4

스스로 해보기 10-16 nunjuncks 질문있습니다

0

499

5

제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.

0

317

2

gif채팅방 nunjucks관련 질문입니다!

0

337

3

현영님 몽고db관련 질문입니다.

0

233

3