본문 바로가기

카테고리 없음

WEB5 - Express Passport.js 2. passport

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

 

구글 API oauth 에서 설정을 해준다

 

 

코드를 작성하고 콘솔로그에 번호를 메겨서 어떤 부분이 작동되는지 확인 해본다

정상 로그인 하면 오류가 나는 것이 정상이다

 

코드추가

app.use(passport.initialize());

app.use(passport.session());

 

passport.serializeUser(function(userdone) {

  done(nulluser.id);

});

 

passport.deserializeUser(function(iddone) {

  User.findById(idfunction(erruser) {

    done(erruser);

  });

});

 

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삭제 마무리