我正在尝试使用本地护照,但是好像没有调用verify函数。我有a,b和c的console.log,但是它们都不触发任何输出。它确实重定向到/ failure
var LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function (username, password, done) {
console.log('a')
users.findOne({ username: username }, function (err, user) {
console.log('b')
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
app.get('/login', (req, res, next) => {
res.send(`<form action="/login" method="post">
<div>
<label>Username:</label>
<input type="text" name="username"/>
</div>
<div>
<label>Password:</label>
<input type="password" name="password"/>
</div>
<div>
<input type="submit" value="Log In"/>
</div>
</form>`);
});
app.post('/login',
passport.authenticate('local', { failureRedirect: '/failure' }),
function (req, res) {
console.log('c')
res.redirect('/');
});
答案 0 :(得分:0)
问题在于1
12
123
123-
123-4
123-45
123-456
123-456-7
123-456-78
123-456-789
t
th
thi
this
thisi
thisis
thisisa
thisisat
thisisate
thisisates
thisisatest
未被填充,因为主体解析器未包含在express中。
添加req.body
和var bodyParser = require('body-parser')
,以便app.use(bodyParser.urlencoded({ extended: false }))
用于本地护照
这是在粘贴一些console.log消息req.body
并发现失败是“缺少凭据”,并在passport/lib/middleware/authenticate
中查找该字符串,并发现正文未定义之后才发现的,我意识到passport-local/lib/strategy
丢失。