无法使用Node.JS + Passport注销

时间:2018-11-28 14:42:16

标签: javascript node.js logout

在Node.JS应用程序中,我使用通行证进行登录。
到目前为止,我从未实现过注销部分,并且正在尝试执行此操作,但是与此同时我遇到了一些问题。
首先,这是我的.js文件,专门用于用户

user.route.js

const passport = require('passport');
const multer = require("multer");
const User = require('../models/user.model');
const config = require('../config.js');


[...]
module.exports = function (app) {

  var user = require('../controllers/user.controller');
  var auth = require('../controllers/auth/auth.controller.js');
  var validator = require('../validations/user.validation');

  const hdlr_newsletter = require('../controllers/hdlr_newsletter');
  const hdlr_server = require('../controllers/hdlr_server');

 [...]
app.get('/api/logout', user.logout);
[...]

这是我为注销编写的代码

exports.logout = (req,res) => {
  //req.logout();
  req.session.destroy(function(err) {
    res.redirect('/');
  });
};

我也尝试过这种变体

exports.logout = (req,res) => {
  req.logout();
  req.session.destroy();
  res.redirect("/");
};

但是它不起作用。每次我注销用户时,如果我尝试使用授予他的令牌发出新请求,该请求都会通过。 我想念什么? 对于任何需求,这都是我用于登录部分的代码

 passport.authenticate('local', { session: true /*, failureCallback: failureCallback */}, (err, user, info) => {
    if (!err) {
      if (!user)
        res.json(info);
      else {
        var userCopy = Object.assign({}, user._doc);
        delete userCopy.password;
        delete userCopy.salt;
        delete userCopy.profilePicture;
            var token = jwt.sign(userCopy, require('../../secret'), {expiresIn: 86400});
            req.login(user, function(err) {
              if (err) {
                return res.status(401).json(err);
              } else {
                res.send({ success: true, status: 200, token: token });
              }
            });

      }
    }
  })(req, res);

};

0 个答案:

没有答案