我有護照本地策略設置爲以下任一故障情況下工作正常。然而在我驗證服務器日誌「D1」,然後掛起,與請求處於「待定」狀態,其餘情況:護照(本地)掛在身份驗證
passport.use(
new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(email, password, done) {
User.getUser(email, password).then(function(users){
if(users && users.length == 1) {
console.log('d1')
return done(null,users[0]) ;
} else {
console.log('d2')
return done(null, false, { message: 'Incorrect credentials.' });
}
}, function(e){
console.log('d3')
return done(null, false, { message: 'Incorrect credentials.' });
});
})
);
passport.serializeUser(function(user, done) {
console.log('s1')
done(null, user);
});
passport.deserializeUser(function(user, done) {
console.log('s2')
done(null, user);
});
server.post(authPostRoute
, passport.authenticate('local',{
successRedirect : "/ideas",
failureRedirect : "/",
})
);
理想我不想在成功/失敗重定向,並且將而是返回一些JSON到瀏覽器。但我似乎無法得到這個簡單的方案工作。
更新 - 通過跟蹤,以護照本地/ strategy.js
上面做的是從strategy.js
function verified(err, user, info) {
if (err) { return self.error(err); }
if (!user) { return self.fail(info); }
//console.log(self.success.toString())
self.success(user, info);
}
這是所有好這個功能。 self.success似乎是一個有效的函數,但它沒有被調用,正如我所知道的那樣。
更新II:護照/ authenticate.js
貌似成功是在護照中定義的函數/ authenticate.js
strategy.success = function(user, info) {
}
我似乎得到
req.logIn(user, options, function(err) {
但從不輸入功能。我是否缺少logIn的定義?
更新三:登錄
通過對護照跟蹤/ HTTP/prequest.js,此行顯然是導致該問題的
if (!this._passport) throw new Error('passport.initialize() middleware not in use');
雖然我認爲我有這個啓用它:
server.use(passport.initialize());
編輯更新IV:移動passport.initialize
我移動護照初始化在流程中的早些時候,現在成功和錯誤重定向似乎工作。
但我仍然無法控制對客戶端的響應。我不想重定向。這是一個不同的問題嗎?
我假設你已經檢查過了,但'用戶'變量在'.then'成功函數中返回真的是一個數組嗎?'getUser'聽起來像會返回一個對象。所以也許'用戶[0]'失敗了? – Matt
是的 - 謝謝 – akaphenom