passport설치
$ npm install passport
$ npm install passport-local
붙여넣기
var passport = require('passport') , LocalStrategy = require('passport-local').Strategy;

세션 다음에 패스포트가 등장 해야 한다

이방식으로 할 예정
app.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' }));

붙여넣을 코드
passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } if (!user.validPassword(password)) { return done(null, false, { message: 'Incorrect password.' }); } return done(null, user); }); } ));

29~41번줄 주석 처리

약속된 사용자 이름과 비밀번호가 아닌 이름을 지정할수 있다
passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'passwd' }, function(username, password, done) { // ... } ));

본인이 사용하고 있는 아이디와 패스워드 이름 값을 넣어준다
인스톨
$ npm install passport-google-oauth


코드를 작성하고 콘솔로그에 번호를 메겨서 어떤 부분이 작동되는지 확인 해본다
정상 로그인 하면 오류가 나는 것이 정상이다

코드추가
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});

request 객체에 user 객체가 들어가 있는지를 확인하기 위한 코드

실제로 serializeUser 정보가 들어오는지 로그인해 확인한다

user 로 변경해준다 (로그인 되면서 로그아웃 버튼이 생긴다 )

session을 user로 변경 해준다 (user이름이 생긴다)
로그아웃 부분


flash message
유저네임 실패시에 실패 메세지 한번만 뜨고 사라지게 하는것이 목표


Install
$ npm install connect-flash
연습


플래쉬 메소드는 우리가 입력한 데이터 값을 추가 해준다 (설명을 위한 코드)
로그인 성공시 파란글씨 나옴


실패시에 빨간 글씨가 나옴


리팩토링
lib/passport.js 파일을 만들고 main.js 에 에 있는 passport 파일을 옮긴다
옮긴 파일을 함수형태로 만들고

main.js에서 받아 사용할수 있게 리턴해준다

함수 받는 부분을 만들어 줬다

로그인 데이터 처리 부분은 auth.js 로 이동시키고 app=>router로 변경 시킨다

함수 부분을 exports해준다

리턴해줘야 한다

함수를 실행해주는 코드작성

필요없는 console.log삭제 마무리