
Session
클라이언트 정보를 서버 측 저장소에 저장하고 사용.
서버측에서 저장.
Cookie
클라이언트 정보를 클라이언트 (브라우저)에 저장하고 사용
클라이언트에서 저장한다.
Session을 사용한 유저 로그인의 경우
Cookie에 Session ID 에 저장 → Session Store 에서 유저 정보 가져오기
JWT를 쿠키에 저장하는 경우
JWT로 요청 → 서명 확인 후 유저 정보 사용
데이터베이스 접근이 줄어서 효율적인 인증 구현 가능

JWT 로그인 구현하기
- 기존 세션으로 구현된 로그인을 비활성화
- 로그인 로직에서 JWT 생성 후 쿠키로 전달
- passport-jwt 패키지로 JWT 로그인 미들웨어 작성 및 사용
로그인 로직에 JWT 토큰 생성 및 쿠키 전달
res.cookie
함수 사용하여 token
을 클라이언트에 쿠키로 전달
setUserToken = (req, res) => {
const token = jwt.sign(user, secret);
res.cookie('token', token);
}
router.get('/', passport,authenticate('local'),
(req, res, next) => {
setUserToken(res, req.user);
res.redirect('/')
});
passport-jwt 사용하기
const jwtStrategy = require('passport-jwt').Strategy;
const cookieExtractor = (req) => {
const {token} = req.cookies;
return token
};
const opts = {
secretOrKey: secret,
jwtFromRequest: cookieExtractor,
}
module.exports = new JwtStrategy(opts, (user, done) => {
done(null, user);
});
passport.use(jwt);
JWT 미들웨어 추가
jwt 토큰은 기본적으로 모든 요청에 포함
요청에 토큰이 있는 경우 로그인된 상태로 처리하기 위해
모든 요청에 공통적으로 적용할 수 있는 미들웨어로 JWT 로그인을 추가
app.use((req, res, next) => {
if(!req.cookies.token) {
next();
return;
}
return passport.authenticate('jwt')(req, res, next);
})
로그아웃
- 로그아웃은 간단하게 클라이언트 쿠키를 삭제하여 처리 가능.
- token 값을 null로 전달하는 것과 함께,
- cookie의 만료 시간을 0으로 설정하여 클라이언트가 쿠키를 만료시키도록 전달한다.
res.cookie('token', null, { maxAge: 0 });

'Node.js' 카테고리의 다른 글
[Node.js] Mongoose 사용법✔️ (0) | 2024.02.03 |
---|

Session
클라이언트 정보를 서버 측 저장소에 저장하고 사용.
서버측에서 저장.
Cookie
클라이언트 정보를 클라이언트 (브라우저)에 저장하고 사용
클라이언트에서 저장한다.
Session을 사용한 유저 로그인의 경우
Cookie에 Session ID 에 저장 → Session Store 에서 유저 정보 가져오기
JWT를 쿠키에 저장하는 경우
JWT로 요청 → 서명 확인 후 유저 정보 사용
데이터베이스 접근이 줄어서 효율적인 인증 구현 가능

JWT 로그인 구현하기
- 기존 세션으로 구현된 로그인을 비활성화
- 로그인 로직에서 JWT 생성 후 쿠키로 전달
- passport-jwt 패키지로 JWT 로그인 미들웨어 작성 및 사용
로그인 로직에 JWT 토큰 생성 및 쿠키 전달
res.cookie
함수 사용하여 token
을 클라이언트에 쿠키로 전달
setUserToken = (req, res) => {
const token = jwt.sign(user, secret);
res.cookie('token', token);
}
router.get('/', passport,authenticate('local'),
(req, res, next) => {
setUserToken(res, req.user);
res.redirect('/')
});
passport-jwt 사용하기
const jwtStrategy = require('passport-jwt').Strategy;
const cookieExtractor = (req) => {
const {token} = req.cookies;
return token
};
const opts = {
secretOrKey: secret,
jwtFromRequest: cookieExtractor,
}
module.exports = new JwtStrategy(opts, (user, done) => {
done(null, user);
});
passport.use(jwt);
JWT 미들웨어 추가
jwt 토큰은 기본적으로 모든 요청에 포함
요청에 토큰이 있는 경우 로그인된 상태로 처리하기 위해
모든 요청에 공통적으로 적용할 수 있는 미들웨어로 JWT 로그인을 추가
app.use((req, res, next) => {
if(!req.cookies.token) {
next();
return;
}
return passport.authenticate('jwt')(req, res, next);
})
로그아웃
- 로그아웃은 간단하게 클라이언트 쿠키를 삭제하여 처리 가능.
- token 값을 null로 전달하는 것과 함께,
- cookie의 만료 시간을 0으로 설정하여 클라이언트가 쿠키를 만료시키도록 전달한다.
res.cookie('token', null, { maxAge: 0 });

'Node.js' 카테고리의 다른 글
[Node.js] Mongoose 사용법✔️ (0) | 2024.02.03 |
---|