我有一個express
應用程序,我試圖使用passport-local
進行驗證。這裏是我的express
應用程序:使用Passport驗證快速應用程序 - Expressjs Passportjs
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: 'this is a string' }));
app.use(passport.initialize());
app.use(passport.session());
client = new pg.Client(connectionString);
client.connect();
passport.use(new LocalStrategy(
function(username, password, done) {
var query = client.query('SELECT * FROM users WHERE EMAIL = $1', [username], function(err, result){
if(err) {
console.log("Error");
return done(err);
}
if(!result.rows.length > 0) {
console.log("No users");
return done(null, false, { message: 'User not found'});
}
if(result.rows[0].password !== password) {
console.log("incorrect password");
return done(null, false, { message: 'Password Incorrect'});
}
console.log('authenticated');
return done(null, result.rows[0]);
});
}
));
passport.serializeUser(function(user, done) {
'use strict';
console.log('serialize');
console.log(user);
done(null, user.email);
});
passport.deserializeUser(function(id, done) {
'use strict';
console.log('deserialize');
User.findById(id, function(err, user) {
done(err, user);
});
});
app.post('/login', passport.authenticate('local'), function(req, res) {
'use strict';
console.log(req.user.username);
});
app.listen(port, function() {
'use strict';
console.log('Listening on:', port);
});
我然後打/login
網址與此json
在我的身上:{username: '[email protected]', password: 'password
}。我通過LocalStrategy
函數,然後在序列化函數中,它將函數調用到done
函數,然後掛起。我沒有得到任何錯誤或額外的日誌記錄,連接只是保持打開狀態,並且控制權不會返回給調用者。我從來沒有收到http
狀態,它只是掛起。
我認爲這是我的session
的問題,但我不明白接下來要做什麼?
簡短的問題。您是否在console.log(req.user.username)處獲得了輸出;何時打開yourDomain:port/login? – ztirom
我弄不明白。 – jhamm
我將它改爲'console.log(req.user.user_name)',然後獲取用戶名。 – jhamm