728x90
반응형
Passport 기반 세션처리
1 2 3 4 5 6 7 8 9 | passport.serializeUser(function(user, done){ console.log("passport session save :", user.id); done(null, user.id); }); passport.deserializeUser(function(id, done){ console.log("passport session get id :", id); done(null, id); }); | cs |
세션을 저장하는 부분에 대한 처리이다.
strategy의 콜백함수에서 done의 매개변수로 false를 주지 않고 객체를 전달했을 때
그값을 serialize로 사용할수 있다.
이러한 값은 serialize 콜백 함수에 user값으로 전달이 된다.
(console.log는 값을 확인 하기 위한 로그이다)
1 2 3 4 5 | // done에 false가 전달 되었을때(에러 시) return done(null, false,{message: 'your email is already used'}) // done에 객체가 전달 되었을때 return done(null, {'email':email,'id' :rows.insertId}) | cs |
즉 2번째와 같은 상황에서 객체로 전달된
{'email':email, 'id':row.inserId}를 serialize로 사용할 수 있다는 말이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var express = require("express"); var app = express(); var router = express.Router(); var path = require('path'); router.get('/', function(req, res){ console.log('main js loaded', req.user); var id = req.user; res.sendFile(path.join(__dirname, '../../public/main.html')); res.render('main.ejs',{'id':id}); }) module.exports = router; | cs |
로그인이 성공하면 /main을 요청하는데 미리 main.js 파일을 생성해뒀다.
req.user로 deserialize의 id 값에 접근할 수 있다.
이 값을 main.ejs에 전달해 준다.
1 2 3 4 5 6 7 8 9 10 11 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>main</title> </head> <body> <h1>hello world</h1> <h3>welcome, <%= id %> !!</h3> </body> </html> | cs |
main.ejs 파일이다.
main.js에서 받아온 id 값을 출력한다.
다음과 같은 결과가 나온다.
숫자 2은 auto_increment 된 유저의 id 값이다.
반응형
'개발' 카테고리의 다른 글
[NodeJS] Passport - logout 처리 (0) | 2017.04.18 |
---|---|
[NodeJS] Passport - Ajax 기반의 인증 처리 (0) | 2017.04.18 |
[NodeJS] Passport - local/strategy 콜백완성 (0) | 2017.04.18 |
[NodeJS] Passport 기반 router 설정 (0) | 2017.04.18 |
[NodeJS] Passport - middleware/strategy 설정 (0) | 2017.04.18 |
댓글