【发布时间】:2018-04-16 22:43:09
【问题描述】:
我正在尝试使用护照通过节点开发身份验证组件。我们使用的是关系数据库,即 mysql,但我在访问端点并实际验证用户时遇到问题。
我有 2 个文件:
app.js
var passport = require('./passport');
app.use(passport.initialize());
app.use(passport.session());
app.post('/login',
passport.authenticate('local', { failureRedirect: '/error' }),
function(req, res) {
res.redirect('/success?username='+req.user.username);
});
和passport.js
var LocalStrategy = require('passport-local').Strategy;
var db = require('./db'); //where the db instance is exported
passport.serializeUser(function (user, done) {
done(null, user.id);
});
// used to deserialize the user
passport.deserializeUser(function (id, done) {
db.query("select * from user where id = " + id, function (err, rows) {
done(err, rows[0]);
});
});
passport.use(new LocalStrategy(
function (username, password, done) {
db.query("select * from user where username= " + username, function (err, rows) {
done(err, rows[0]);
console.log(rows)
});
}
));
根据文档,这是正确的做法,但显然我一定做错了,因为这是我尝试使用用户名和密码对象进行发布请求时收到的错误消息:
2:8888/login:1 选项http://localhost:8888/login 404(未找到) 本地主机/
:1 加载 http://localhost:8888/login 失败:预检响应包含无效的 HTTP 状态代码 404。
有什么建议吗?谢谢大家
【问题讨论】:
标签: node.js passport.js passport-local