Passport.js执行

我一直在看网上的一些passport.js教程,但没有清楚地了解到底发生了什么。 有人能帮我清楚我的疑惑吗? 请先阅读底部的段落。

所以假设我正确地设置了一切,这是login策略:

 passport.use('login', new LocalStrategy({ passReqToCallback : true }, function(req, username, password, done) { // check in mongo if a user with username exists or not User.findOne({ 'username' : username }, function(err, user) { // In case of any error, return using the done method if (err) return done(err); // Username does not exist, log error & redirect back if (!user){ console.log('User Not Found with username '+username); return done(null, false, req.flash('message', 'User Not found.')); } // User exists but wrong password, log the error if (!isValidPassword(user, password)){ console.log('Invalid Password'); return done(null, false, req.flash('message', 'Invalid Password')); } // User and password both match, return user from // done method which will be treated like success return done(null, user); } ); })); 

现在在我的app.js(服务器)我有这个作为我的路线之一:

 /* Handle Login POST */ router.post('/login', passport.authenticate('login', { successRedirect: '/home', failureRedirect: '/', failureFlash : true })); 

现在在我的AJS文件中:

 app.controller('loginController', function($scope) { var user = $resource('/login'); $scope.createUser = function() { var User = new user(); User.username = $scope.usernameVar; User.password = $scope.passwordVar; User.save(); } }); 

请先阅读(不要先通过代码):

所以当用户点击login页面上的loginbutton时,运行上面的createUser函数(在我的AJS文件中)。 然后我为端点'/login'创build一个资源对象,当我调用save时,它将在我的服务器(app.js)上运行该'/login'端点的路由。 然后在我的服务器将passport.authenticate('login', ...将运行护照中间件。

现在我的问题是:

passport.use('login'...策略中,variablesreq, username, and password来自callback策略。我是否必须显式地传递用户input的用户名和密码textfield在我的前端。就像我有一个双向数据绑定这两个文本框在AJS视图。如果是这样我怎么传递这些用户名和密码值?

在AJS控制器中执行这两行User.username = $scope.usernameVar;User.password = $scope.passwordVar; 将usernameVar和passwordVar值附加到我的服务器上的req对象的路由'/login'

如果您有一个表单可以发布到您的path/login ,并且input名称标有您的usernamepassword ,那么提交button会将这些值传递给您的护照代码。

查看文档中的 表单