npm init
명령어로 작성하면 된다.node_modules
폴더와 package-lock.json
이 자동으로 생성된다.$ npm i sequelize mysql2 sequelize-cli
$ npx sequelize init
템플릿 파일을 넣을 views, 라우터 파일을 넣을 routes, 정적 파일을 넣을 public, passport패키지를 위한 passport 폴더들을 만든다.
서버 코드다 담길 app.js, 설정값들을 담을 .env 파일 생성
** 템플릿 엔진은 넌적스를 사용한다.
MySQL과 시퀄라이즈로 데이터 베이스를 설정한다.
passport 모듈은 이름처럼 우리의 서비스를 사용할 수 있게 해주는 여권 같은 역할을 한다.이것을 사용하면 기존의 SNS 서비스 계정으로 로그인 하는 것을 해결할 수 있다.
// Passport 관련 패키지 설치
$ npm i passport passport-local passport-kakao bcrypt
module.exports = () => {
/**
* 로그인시 실행
* req.session(세션) 객체에 어떤 데이터를 저장할지 정하는 메서드
* 사용자 정보 객체를 세션에 아이디로 저장
*/
passport.serializeUser((user, done) => {
/**
* done( 첫 번째 인수, 두 번째 인수)
* 첫 번째 인수 :: 에러 발생시 사용
* 두 번째 인수 :: 저장하고 싶은 데이터
*/
done(null, user.id);
});
/**
* 세션에 저장한 아이디를 통해 사용자 정보 객체를 불러오는 것
* 매요청시 실행. passport.sesseion 미들웨어가 이 메서드 호출함
* serializeUser의 done 의 두번째 인수가 이 메서드의 매개변수가 됨
* 여기서는 사용자 id
*/
passport.deserializeUser((id, done) => {
User.findOne({ where: { id } })
.then(user => done(null, user))
.catch(err => done(err));
});
local();
kakao();
};
** Passport는 로그인시의 동작을 전략(strategy)라는 용어로 표현한다.
로컬 로그인이란 다른 SNS 서비스를 통해서 로그인하지 않고 자체적으로 회원가입 후 로그인하는 것을 의미한다.
Passport에서 이를 구현하려면 passport-local 모듈이 필요한데 이미 설치했으므로 로컬 로그인 전략만 세우면된다.
카카오 로그인이란 로그인 인증 과정을 카카오에 맡기는 것을 뜻한다. SNS 로그인의 특징은 회원가입 절차가 따로 없다는 것이다. 대신에 SNS 로그인 전략은 로컬 로그인 전략보다 다소 복잡하다.
multer 패키지 설치
$ npm i multer