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名称标有您的username
和password
,那么提交button会将这些值传递给您的护照代码。
查看文档中的 表单 。