我的代码无法通过护照js重定向。验证问题

时间:2019-07-08 11:01:59

标签: node.js passport.js mean-stack

我正在尝试使用护照js进行身份验证,如果身份验证成功,则重定向到主页,但无法重定向

我试图检查passport.authentication调用是否起作用。但是,是的,如果身份验证失败,它可以处理该怎么办,但是如果身份验证是真实的,它就不能处理。

第一个登录表单提交并形成action =“ / users / create-session” 。 。

//这是动作控制器页面...

const express=require('express');
const router=express.Router();
const passport=require('passport');




router.post('/create-session',passport.authenticate(
    'local',
    {failureRedirect:'/users/signin'},
),usersController.createSession);

。 。 。 //护照本地页面。...

const passport=require('passport');
const LocalStrategy=require('passport-local').Strategy;
const User=require('../models/user');

//使用护照进行身份验证

passport.use(new LocalStrategy({
    usernameField:'email'
    },
    function(email,password,done){
        //find a user and establish the identity
        User.findOne({email:email},function(err,user){
              if(err){
                console.log('Error in finding user --> Passport');
                return done(err);
            }
            if(!user||user.password!=password){
                console.log('Invalid Username/Password');
                return done(null,false);
            }
              return(null,user);
             })
    }
));

//对用户进行序列化,以决定将哪个密钥保留在cookie中

passport.serializeUser(function(user,done){
    done(null,user.id);
})

///根据Cookie中的密钥反序列化用户

passport.deserializeUser(function(id,done){
    User.findById(id,function(err,user){
        if(err){
            console.log('Error in finding User --> Passport');
            return done(err);
        }
        return done(null,user);
    });
})

module.exports=passport;

。 。 。 。 。 。 //usersController.createSession页面 。

module.exports.createSession=function(req,res){

    return res.redirect('/');

}

预计登录后如果密码正确,应将其重定向到“ locolhost:8000 /”,但转盘仍保持打开状态,并且有时它说页面无法正常工作,本地主机未在此处发送任何数据输入代码

1 个答案:

答案 0 :(得分:0)

在代码中 //使用护照进行身份验证

passport.use(new LocalStrategy({
usernameField:'email'
},
function(email,password,done){
    //find a user and establish the identity
    User.findOne({email:email},function(err,user){
          if(err){
            console.log('Error in finding user --> Passport');
            return done(err);
        }
        if(!user||user.password!=password){
            console.log('Invalid Username/Password');
            return done(null,false);
        }
          return(null,user);
.
.

-----------------------------------------------
//instead return(null,user); .... return done(null,user);  must be there
.
.
.

         })
}
));