0
我想嘗試一個本地策略護照的例子。當我做不正確的密碼POST請求(我只有在這一刻單個數據庫記錄),它仍然結束了執行我的成功函數:護照本地策略執行successcase總是
function (err, user) {
console.log("Login successful");
res.redirect('/loggedIn');
}
在passport.authenticate.Where定義我該怎麼錯了?何時調用failureRedirect。
var express = require('express');
var app = express();
var http = require('http');
var server = http.Server(app);
var querystring = require('querystring');
var bodyParser = require('body-parser');
var passport = require('passport');
var Strategy = require('passport-local').Strategy;
var users = {
user : {username : "abc", password : "123"},
findByUsername (username, cb) {
return cb(null, this.user);
}
};
app.use(bodyParser.json());
app.use(passport.initialize());
app.use(passport.session());
passport.use(new Strategy(
function verify (username, password, done) {
users.findByUsername(username, function (err, user) {
if (err) { return done(err);}
if (!user) {return done(null, false);}
if (user.password != password) {return done(null, false);}
return done(null, user);
});
} // close verify function
));
app.get('/signupError', function (req, res) {
var result = {error : 'You entered incorrect username/password'};
res.status(200).json(result);
});
app.get('/loggedIn', function (req, res) {
var result = {error : 'You entered correct username/password'};
res.status(200).json(result);
});
app.post('/login', function (req, res) {
passport.authenticate('local', { failureRedirect: '/signupError' },
function (err, user) {
console.log("Login successful");
res.redirect('/loggedIn');
})(req,res);
});
server.listen(80, function() {
console.log("listening") ;
});
都能跟得上使用這種說法。這沒有幫助。 – j10