티스토리 뷰
728x90
출처
- NodeJS Passport login script with MySQL database
- node.js 사용자에게 메시지 날리기 connect-flash : 네이버 블로그
- 15장 passport 모듈을 이용한 사용자 인증 (2) :: GoodBye World
/config/dbHelper.js
const mariadb = require('mariadb'); var config = require('./db_config'); // ./는 현재 디렉토리를 나타냅니다 const pool = mariadb.createPool({ host: config.host, port: config.port, user: config.user, password: config.password, database: config.database, connectionLimit: 5 }); function dbHelper() { // this.getConnection = function(callback) { pool.getConnection() .then(conn => { callback(conn); }).catch(err => { //not connected }); }; // this.getConnectionAsync = async function() { try { let conn = await pool.getConnection(); // console.log("conn = " + conn); // { affectedRows: 1, insertId: 1, warningStatus: 0 } return conn; } catch (err) { throw err; } return null; }; // this.sendJSON = function(response, httpCode, body) { var result = JSON.stringify(body); response.send(httpCode, result); }; } module.exports = new dbHelper();
/config/passport.js
var dbHelper = require('./dbHelper'); const LocalStrategy = require('passport-local').Strategy; module.exports = (passport) => { // 로그인이 성공하면, serializeUser 메서드를 이용하여 사용자 정보를 Session에 저장할 수 있다. passport.serializeUser((user, done) => { console.log('serialize'); done(null, user); }); // 인증 후, 페이지 접근시 마다 사용자 정보를 Session에서 읽어옴. passport.deserializeUser((user, done) => { console.log('deserialize'); done(null, user); }); passport.use(new LocalStrategy({ usernameField : 'userid', passwordField : 'password', passReqToCallback : true }, // 인증 요청 function(req, userid, password, done) { if(!userid || !password ) { return done(null, false, req.flash('message','All fields are required.')); } dbHelper.getConnection(function(conn) { console.log('conn = ' + conn); conn.query("select * from member where email = ?", [userid]).then((rows) => { // console.log(rows); if(!rows.length) { return done(null, false, req.flash('message','Invalid username or password.')); } var dbPassword = rows[0].password; if(!(dbPassword == password)) { return done(null, false, req.flash('message','Invalid username or password.')); } return done(null, rows[0]); }) .then((res) => { console.log('res = '+res); // { affectedRows: 1, insertId: 1, warningStatus: 0 } conn.end(); }) .catch(err => { //handle error console.log(err); conn.end(); if (err) return done(req.flash('message',err)); }); }); } )); };
웹페이지에 값 전달 (connect-flash 모듈)
/app.js
var flash = require('connect-flash'); app.use(passport.session()); //로그인 세션 유지 app.use(flash());
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- BPI-M4
- Delphi
- 지스타2007
- koba2010
- flex
- 송주경
- 동경
- Spring
- 전예희
- ble
- ubuntu
- NDK
- Java
- ffmpeg
- Mac
- 서울오토살롱
- Delphi Tip
- 일본여행
- KOBA
- Spring MVC
- Xcode
- MySQL
- JavaScript
- Linux
- sas2009
- 레이싱모델 익스트림 포토 페스티벌
- SAS
- 튜닝쇼 2008
- oracle
- android
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함