我遇到了一個問題,當我嘗試使用護照登錄時,頁面不重定向。授權返回true
(正確的用戶名,密碼)。護照沒有授權後重定向
我很確定它位於我的validPassword
函數中的某處,但我不確定。
登錄路由
app.get('/login', function (req, res) {
res.render('login', {});
});
登錄後
app.post('/login',
passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login' }));
用戶原型
User.prototype.validPassword = function(username, unhashedPassword) {
async.waterfall([
function (callback) {
User.find({ "username" : username }, function (err, data) {
if(err) return handleError(err);
callback(null, data);
});
},
function (data, callback) {
var isGood = passwordHash.verify(unhashedPassword, data[0].password);
callback(null, isGood);
}
], function (err, result) {
return result;
});
};
本地策略
passport.use(new LocalStrategy(
function(username, password, done) {
var unhashedPassword = password;
var passedUsername = username;
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(passedUsername, unhashedPassword)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
有被打印出來給我的控制檯沒有錯誤,所以我稍微感到困惑現在。 isGood
是否可能以錯誤的格式返回?任何幫助都會很棒。
是它重定向到科爾ect子域? (127.0.0.1或localhost)? – PSeUdocode
@PSeUdocode如果我在127.0.0.1上,它將重定向到127.0.0.1,本地主機也是如此。會發生什麼是你把你的信息和登錄URL地址欄從'/ login'到'/'回到'/ login'都在同一個序列中,這意味着某些東西沒有授權權。它給了我一個302錯誤,但我的app.post('/ login')'路線顯然在那裏。 – pattmorter