Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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不设置cookies?_Javascript_Node.js_Passport.js - Fatal编程技术网

Javascript Passport不设置cookies?

Javascript Passport不设置cookies?,javascript,node.js,passport.js,Javascript,Node.js,Passport.js,我试图在有人登录时将用户分配到cookie,但passport似乎没有将数据分配到cookie。您可以在下面找到代码: app.use(bodyParser.urlencoded({ extended: true })); app.use(cookieParser()); app.use(bodyParser.json()); app.use(passport.initialize()); //Use session app.use(passport.session({ secr

我试图在有人登录时将用户分配到cookie,但passport似乎没有将数据分配到cookie。您可以在下面找到代码:

app.use(bodyParser.urlencoded({
  extended: true
}));


app.use(cookieParser());

app.use(bodyParser.json());


app.use(passport.initialize());

//Use session
app.use(passport.session({ secret: '=Mx;D5F}t&iJZ&w-g;FLK:%QavZgZt', cookie: { maxAge: 0 }, resave: true, saveUninitialized: true }))

app.use(express.static('server/public'));


//Set view engine
app.set('views', 'server/views')
app.set('view engine', 'pug');


//Set passport local strategy
passport.use(new LocalStrategy({ usernameField: "email" },
  function (email, password, done) {
    User.findOne({ 'email': email }, async function (err, user) {
      console.log('user requested password caught in passport: ', password);
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, console.log('Wrong username'));
      }
      return await user.validatePassword(password, function (err, result) {
        if (err || !result) return done(null, false, console.log('Wrong Password'));
        return done(null, user);
      })
    });
  }
));

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

// deserialize user object
passport.deserializeUser(function (id, done) {
  User.findById(id, function (err, user) {
    done(err, user);
  })
});

这是登录路径:

//Route for user login
app.post('/auth/local/signin',
  function (req, res, next) {
    passport.authenticate('local', function (err, user, info) {
      console.log(err);
      console.log(user);

      if (err) {
        console.log('passport.authenticate: error')
      } else if (!user) {
        console.log('passport.authenticate: user')
      } else {
        console.log('next handler')
        console.log('Cookie assigned: ' + req.user)
        return res.redirect('/dashboard')
      }

      return res.redirect('/login')

    })(req, res, next)
  }
)
正如您所看到的,我尝试记录req.user,它返回未定义的


但是,console.log(user)从数据库返回用户,这正是我想要的。

请求来自express,而不是passport。对于cookies,您应该检查
req.cookies
@DarknessZX,我已经用console.log('Cookie assigned:',req.cookies)尝试过了,它返回Cookie assigned:[Object:null prototype]{}您尝试过增加
maxAge