Node.js 使用Express的节点passport流
我正在学习Node.s和Express,下面是来自的示例。你能解释一下下面的问题吗Node.js 使用Express的节点passport流,node.js,express,passport.js,Node.js,Express,Passport.js,我正在学习Node.s和Express,下面是来自的示例。你能解释一下下面的问题吗 在“/login”post路由中,如果我需要访问请求和响应对象,我应该如何操作 LocalStrategy()中的“done”函数是什么?我如何知道要传递什么参数?看起来需要3个参数,第2个参数是用户对象,第3个参数是消息。第一个论点是什么 用户名和密码如何从“/login”post路由传递到LocalStrategy?幕后有什么魔力 router.post(“/login”),passport.authenti
router.post(“/login”),passport.authenticate(“login”{
成功重定向:“/”,
failureRedirect:“/login”,
failureFlash:正确
}));
passport.use(“登录”),新的本地策略(函数(用户名、密码、完成){
findOne({username:username},函数(err,User){
if(err){返回完成(err);}
如果(!用户){
返回done(null,false,{消息:“没有用户拥有该用户名!”});
}
user.checkPassword(密码,函数(err,isMatch){
if(err){返回完成(err);}
如果(isMatch){
返回完成(空,用户);
}否则{
返回完成(null,false,{消息:“无效密码”。});
}
});
});
}));
问题1和问题2的答案在
3位于同一文档页面。
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'passwd'
},
function(username, password, done) {
// ...
}
));