본문 바로가기

Node.js

[express] Session

세션(Session)

세션에 대한 기본적인 이해는 되었으니 이제 사용법을 알아보겠다.

 

먼저, 두가지 라이브러리를 설치해야한다.

npm i express-session session-file-store

 

express-session : 세션을 사용하기 위한 라이브러리
session-file-store : 세션을 저장하기 위한 세션저장소

 

아래는 서버에서의 기본적인 설정이다.

 

const session = require('express-session');
const FileStore = require('session-file-store')(session);

app.use(session({
    secret: 'jung',
    resave: false,
    saveUninitialized: true,
    store: new FileStore(),
    cookie: {
        maxAge: 1000*60*10,
    },
}));

 

secret : 보안 목적의 값, 테스트용으로는 아무거나 입력해도 됨.

resave : 수정되지 않은 세션도 저장할 것 인가.

saveUninitialized : 저장할 값이 없어 세션을 새로 생성할 것인지.

cookie: { maxAge } : 쿠키를 유지할 시간.

 

 

이제 활용하는 방법이다.

 

db.query(query, params, (err, result) => {
        if (err) throw err;
        if (result.length > 0) {
            req.session.is_logined = true;
            req.session.ss_nickname = result[0].nickname;

            req.session.save(function () {
                res.json({ redirectPath: '/', ss_nickname: result[0].nickname });
            });
        }
    });

위 코드는 클론 프로젝트에서 사용했던 코드의 일부이다.

 

session.*** 을 이용해 세션을 생성 저장하고, res.json으로 원하는 값을 전달해 줄 수 있다.

이 부분은 로그인 자가 누구인지 등을 표현하기위해 필요하다.

또한, express-session은 sessionID값을 자동으로 쿠키로 전달해주기 때문에 그대로 이용하면 된다.

 

클라이언트 측에 쿠기로 sessionID가 저장되었기 때문에 특정 상태에서 로그인 상태에 대해 확인이 필요하면,
로그인 상 확인을 위한 엔드포인트를 만들어 기능을 추가하여주면 된다.

 

app.get('/check', (req, res) => {
    if (req.session.is_logined) {
        res.json({ loggedIn: true, ss_nickname: req.session.ss_nickname });
    } else {
        res.json({ loggedIn: false });
    }
});

 

다만 여기서도 sessionID를 딱히 전달받거나 하지 않는데,
클라이언트 측에서 로그인 상태 확인 부분에 'credentials: 'inclued'' 옵션을 사용하면 클라이언트가 서버에 요청을 보낼때 자동으로 쿠키를 전달한다. (서버에서는 이 쿠키를 통해 세션ID 확인)

'Node.js' 카테고리의 다른 글

[Node.js] Google Vision Api OCR / 텍스트 추출하기 / Tesseract?  (0) 2024.12.11
[Node.js] Multer  (0) 2024.11.20
[Node] passport  (0) 2024.11.08
[Node] Axios  (0) 2024.02.28
[Node] Body-Parser  (1) 2024.02.27