HASH
-문자열을 되돌릴 수 없는 방식으로 암호화 하는 법const hash=crypto.createHash('sha1'); //crypto(node.js의 기본제공 모듈)을 사용하여 hash값 얻기 //sha1=>알고리즘 중 하나 hash.update(password); hash.digest("hex");//16진수
=>단방향 암호화 함수
Hash 값을 알더라도 원본 문자열을 알아낼 수 x
Passport.js
-Express.js에 사용자 인증 기능을 구현하게 도와주는 패키지
-유저 세현 관리 및 다양한 로그인 방식 추가 기능
-strategy라는 인터페이스 제공
passport.use()//작성한 strategy를 선언
passport.authenticate('http라우팅')//request handler자동생성
//유저정보를 세션에 저장하고 가져오는 동작
const session=require('express-session')
passport.session()
//session에 user 정보를 변환하여 저장하고 가져오는 기능
passport.serializeUser((user, callback) => {
callback(null, user);
});
passport.deserializeUser((obj, callback) => {
callback(null, obj);
});
Session
-웹서버가 클라이언트의 정보를 클라이언트별로 구분하여 서버에 저장/
클라이언트 요청시 Session ID를 사용하여 클라이언트의 정보를 다시 확인
<->Cookie(클라이언트가 정보를 저장/요청시 정보는 보냄)
Session 작동 방식
1. 서버는 세션을 생성하여 Session ID(세션 구분자)를 클라이언트에 전달
2. 클라이언트는 요청 시 session id를 함께 요청에 담아서 전송
3. 서버는 전달받은 session id로 해당하는 세션을 찾아 클라이언트 정보 확인
Session Store
-서버 간 동일한 세션 저장소를 공유
-expression-session패키지는 session을 메모리에 저장
->종료후 다시 실행하면 로그인 해제=>서버 간 세션 정보 공유 못함❗
const MongoStore = require('connect-mongo');
app.use(session({
~~~
~~~
store: MongoStore.create({
mongoUrl: 'mongoUrl',
}),
}));
//connect-mongo를 사용하여 MongoDB를 session store로 사용 가능
//세션데이터를 몽고디비에 저장하고 관리하는 기능을 자동으로 수행해줌