2014-10-21 2 views
0

현재 node.js 웹 응용 프로그램의 인증에 여권을 사용하려고합니다. 그러나 세션 데이터가 올바르게 저장되는 데 문제가 있습니다. 지금은 전혀 저장되지 않습니다.프로필 및 세션 문제의 인증 문제 passport.js/Node.js

App.js

// required for passport 
app.use(session({ secret: 'ilovescotchscotchyscotchscotch' })); // session secret 
app.use(passport.initialize()); 
app.use(passport.session()); // persistent login sessions 
app.use(flash()); // use connect-flash for flash messages stored in session 

passport.js

위 코드에서

app.post('/login', passport.authenticate('local-login', 
    { 
     successRedirect: '/profile', 
     failureRedirect:'/login', 
     failureFlash: true, 
     badRequestMessage: 'Please enter your account credentials to login.' 
    })); 
    // ===================================== 
    // PROFILE SECTION ===================== 
    // ===================================== 
    // we will want this protected so you have to be logged in to visit 
    // we will use route middleware to verify this (the isLoggedIn function) 
    app.get('/profile', isLoggedIn, function(req, res) { 
     console.log("req query:" + JSON.stringify(req.query, null, 4)); 
     console.log("req body:" + JSON.stringify(req.body, null, 4)); 

     res.render('profile.jade', { 
      user : req.user // get the user out of session and pass to template 
     }); 
    }); 

var users = [ 
{ id: 1, username: 'bob', password: 'secret', email: '[email protected]' }, 
{ id: 2, username: 'joe', password: 'birthday', email: '[email protected]' } 
]; 

function findById(id, fn) { 

    fn(null, users[1]); 
} 

module.exports = function(passport, db) { 
// used to serialize the user for the session 
    passport.serializeUser(function(user, done) { 
     console.log("serialization" + JSON.stringify(user, null, 4)); 
     done(null, user.personnel_id); 
    }); 

    // used to deserialize the user 
    passport.deserializeUser(function(id, done) { 
     findById(id, function (err, user) { 
      console.log("deserialization" + JSON.stringify(user, null, 4)); 

      done(err, user); 
     }); 

    }); 

routes.js 다음 코드를이 순서대로 실행

  • 사용자가 성공적으로 인증되므로 serialize 및 serialize가 호출됩니다.
  • 응용 프로그램은 원하는/profile로 리디렉션되지만 req는 비어 있습니다. 나는 req.body 어딘가에 표시 할 역 직렬화 데이터를 기다리고 있었다,하지만 난 아마 뭔가 작은 내려다 보이는 해요

, 어떤 도움이 감사, D 감사 것을 확인할 수 없습니다

답변

1

K는 신경 쓰지 않는다. 대답을 찾았습니다.

req.session.passport에 저장됩니다.