1
我想通過passport.js使Node.js ajax身份驗證,我想在/login
頁面顯示消息。我應該在我的護照策略中使用res.send
,然後ajax調用成功結束,並將成功數據顯示在其頁面上。但我無法猜測如何使用res。在戰略。請看下面的代碼,如何在護照策略中使用res.send?
login.ejs
<div id="messages"></div>
<!-- and there is a form, when form submitted, the ajax call executed.-->
<!-- ...ajax method : POST, url : /login, data: {}, success:... -->
<!-- If ajax call success, get 'result' data and display it here -->
app.js
// and here is ajax handler
// authentication with received username, password by ajax call
app.post('/login', passport.authenticate('local'),
function(req, res, next){
res.redirect('/');
});
// and here is passport strategy
passport.use(new passportLocal.Strategy(function(userid, password, done) {
Members.findOne({'user_id' : userid}, function(err, user){
// if user is not exist
if(!user){
// *** I want to use 'res.send' here.
// *** Like this :
// *** res.send('user is not exist');
// *** If it is possible, the login.ejs display above message.
// *** That's what I'm trying to it. How can I do it?
return done(null, null);
}
// if everything OK,
else {
return done(null, {id : userid});
}
})
}));
我搜索對谷歌某些文檔,人們通常在連接使用 '閃光()' -flash模塊,但我認爲這個模塊需要重新加載頁面,這不是我想要的,所以請幫助我,讓我知道是否有更好的方法。謝謝。
+1(我認爲這種分離值得關注的是最好在具有護照中間件處理響應直接) – robertklep
如果我將代碼更改爲喜歡你的代碼,我認爲我不能使用不同的故障處理程序。不是嗎?如果郵件是2種('錯誤密碼'),('該ID不存在'),我無法使用它。但是隻能處理('用戶不存在'),因爲它確定存在或不存在通過護照策略的「用戶對象」。對? – Juntae