Nodejs Passport身份验证&本地策略无法通过API调用工作

时间:2018-02-28 11:43:33

标签: node.js passport.js postman passport-local

  

这已经解决了。实际上,问题在于邮递员不在Passport代码上

我有一个通过Nodejs Passport实现的登录系统。对于Login,我使用Handlebars来创建UI并将表单数据从前端发送到后端。

这是我的登录Handlebars文件

<form id="userloginform" method="post" action="/user/login">
    <div class="form-group">
        <label>Username</label>
        <input type="text" name="username" class="form-control" placeholder="Username or Email">
    </div>
    <div class="form-group">
        <label>Password</label>
        <input type="password" name="password" class="form-control" placeholder="Password">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

在User.js文件中我有一个身份验证代码,就像这样

//Login Handler
passport.use('local-user', new LocalStrategy(
  function(username, password, done) {
    User.getUserByUsername(username, function(err, user){
        if(err) {
            console.log('error')
            logger.log('error', 'Error Generates on User.getUserByUsername Query on users.js file');
            throw err;
        }
        if(!user){
            return done(null, false, {message: 'Unknown User'});
        }
        User.comparePassword(password, user.password, function(err, isMatch){
            if(err) {
                logger.log('error', 'Error Generates on User.comparePassword Query on users.js file');
                throw err;
            }
            if(isMatch){
                return done(null, user);
            }else{
                return done(null, false, {message: 'Invalid Credential, please check carefully...!'})
            }
        });
    });
  }
));

//Login Authentication
router.post('/login',
  passport.authenticate('local-user', {
    failureRedirect: '/user/login',
    badRequestMessage: 'Field cannot be blank.!!', //missing credentials
    failureFlash: true
  }),
  function(req, res) {
    console.log('hello');

    req.flash('success_msg', 'Welcome ' + req.user.name);
    req.flash('custom_msg', token);
    //res.redirect('/success?username='+req.user.username);
    res.redirect('/user/dashboard');
  });

所有这些都很有效。

  

现在,当我通过邮递员调用它并传递两个参数,即用户名和密码时,它什么也没做。简单地失败重定向。

我通过带有表单提交模式的正确nodejs完成了这项工作。现在我希望通过不同服务器的API完成。

任何人都有任何想法然后让我知道。任何帮助都非常感谢。

0 个答案:

没有答案