Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Passport.js执行_Javascript_Node.js_Express_Passport.js_Passport Local - Fatal编程技术网

Javascript Passport.js执行

Javascript Passport.js执行,javascript,node.js,express,passport.js,passport-local,Javascript,Node.js,Express,Passport.js,Passport Local,我一直在网上看一些passport.js教程,但还没有对正在发生的事情有一个清晰的理解。有人能帮我澄清下面的疑问吗请先阅读底部的段落。 因此,假设我正确设置了所有内容,这是登录策略: passport.use('login', new LocalStrategy({ passReqToCallback : true }, function(req, username, password, done) { // check in mongo if a user with

我一直在网上看一些
passport.js
教程,但还没有对正在发生的事情有一个清晰的理解。有人能帮我澄清下面的疑问吗请先阅读底部的段落。

因此,假设我正确设置了所有内容,这是登录策略:

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();
    }
});
请先阅读(而不是先阅读代码):

因此,当用户单击登录页面上的登录按钮时,上面的
createUser
功能将运行(在我的AJS文件中)。然后,我为端点
'/login'
创建一个资源对象,当我调用save时,它将在我的服务器(app.js)上运行该
'/login'
端点的路由。然后在我的服务器中,它将
passport.authenticate('login',…
,它将运行passport中间件

现在我的问题是:

passport.use中('login'…
策略,其中变量
req、username和password
的do值来自该策略的回调。我是否必须显式传递用户在我前端的textfield中输入的用户名和密码。就像我在AJS视图中为这两个textfield提供了双向数据绑定一样。如果是,我如何传递那些用户名和密码值


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

如果您有一个带有操作的表单发布到路径
/login
,并在您的
用户名
密码
后标记输入名称,提交按钮将把值传递给您的护照代码


查看。

中的表单如果您有一个带有操作的表单要发布到路径
/login
,并且在您的
用户名
密码
后标记了输入名称,则提交按钮会将值传递到您的护照代码


签出中的表单

中的
用户名
密码
不是从req对象传递到passport代码的变量。
当Passport对请求进行身份验证时,它将解析请求中包含的凭据。然后,它将这些凭据作为参数(在本例中为用户名和密码)调用verify回调"
是的,
username
password
字段被传递到
req
对象,然后传递到passport的本地策略。请看:哦,好的。现在它是有意义的。所以基本上,如果我在两个文本字段上有
username
password
作为name属性,它将自动获取va单击submit按钮时,将这两个文本字段的值传递给request对象,然后用户名和密码的值基于passport代码。谢谢。
username
password
变量不是从req对象传递给passport代码的吗。
当Passport对请求进行身份验证时,它将解析请求中包含的凭据。然后,它将这些凭据作为参数(在本例中为用户名和密码)调用verify回调"
是的,
username
password
字段被传递到
req
对象,然后传递到passport的本地策略。请看:哦,好的。现在它是有意义的。所以基本上,如果我在两个文本字段上有
username
password
作为name属性,它将自动获取va单击submit按钮时,将这两个文本字段的值传递给request对象,然后用户名和密码的值基于passport代码。谢谢!