首页 > 解决方案 > 用户登录后如何在passport.authenticate(本地)中返回用户对象?

问题描述

如何在authController我登录的文件中设置以将用户对象返回给我?我正在尝试以这种方式res.json (req.body)userControllerer文件中进行设置exports.register,但这可能会在尚不知道他是否已登录时返回用户?我的观点是,就像authController成功一样,它会将登录用户的对象返回给我。

路线/index.js

const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
const authController = require('../controllers/authController');

router.get('/register', userController.registerForm);
router.post('/login', authController.login);

router.post('/register', 
  userController.validateRegister,
  userController.register
  authController.login
);

module.exports = router;

控制器/userController.js

const mongoose = require('mongoose');
const User = mongoose.model('User');

exports.registerForm = (req, res) => {
  res.json(req.body);
};

exports.register = async (req, res, next) => {
  const newUser = new User({ email: req.body.email, name: req.body.name })
  await User.register(newUser, req.body.password);

  next()
}

控制器/authController.js

const passport = require('passport');

exports.login = passport.authenticate('local', {
     failureRedirect: '/login',
     successRedirect: '/'
})

标签: javascriptnode.jsexpress

解决方案


使用以下实现:

路线/index.js

router.post('/login',
  passport.authenticate('local'),
  function(req, res) {
    // If this function gets called, authentication was successful.
    // `req.user` contains the authenticated user.
    res.send(req.user);
  });

推荐阅读