“登录会话需要会话支持。您是否忘记使用‘express-session’中间件?”

Nik*_*nov 4 mongodb node.js express

学习node.js遇到这个错误“登录会话需要会话支持。你忘记使用express-sessionmiddlewar了吗?” 有没有人在创建 Node.js 项目时遇到过这个特定错误,如果是的话,您是如何解决的?

const express = require('express');

const cors = require('cors');

const bodyParser = require('body-parser');

const mongoose = require('mongoose');

const passport = require('passport');

const path = require('path');

const config = require('./config/db');

const account = require('./routes/account');

const session = require('express-session');

const app = express();

const port = 3000;

app.use(passport.initialize());
app.use(passport.session());

require('./config/passport')(passport);

app.use(cors());

app.use(bodyParser.json());


mongoose.connect(config.db);

mongoose.connection.on('connected', () => {
    console.log("Successful connection to the database")
});

mongoose.connection.on('error', (err) => {
    console.log("Not successful connection to the database")
});


app.listen(port, () => {
    console.log("The server was running on the port: " + port)
});

app.get('/', (req,res) => {
    res.send("Home page")
});

app.use('/account', account);


const express = require('express');

const router = express.Router();

const User = require('../models/user');

const passport = require('passport');

const jwt = require('jsonwebtoken');

const config = require('../config/db');


router.post('/reg', (req,res) => {
    let newUser = new User({
        name: req.body.name,
        email: req.body.email,
        login:req.body.login,
        password: req.body.password,
    }); 





    User.addUser(newUser, (err, user) => {
        if(err) {
            res.json({success: false, msg: "User has not been added."})
        }
        else {
            res.json({success: true, msg: "User has been added"})
        }
    })
});



router.get('/auth', (req,res) => {
    res.send("Login page")
});

router.get('/dashboard', passport.authenticate('jwt', {session : false}), (req,res) => {
    res.send("Dashboard")
});

module.exports = router;
Run Code Online (Sandbox Code Playgroud)

rob*_*lep 9

该错误提出了一个相关问题:“您忘记使用快速会话中间件了吗?” 。

\n

事实上,您正在加载passport.session()但没有使用express-session,这是一个要求。

\n

要修复它,请在使用express-session 之前passport.session()使用:

\n
app.use(session({ \xe2\x80\xa6 }));\napp.use(passport.initialize());\napp.use(passport.session());\n
Run Code Online (Sandbox Code Playgroud)\n

  • @NikhilVJ 阅读“express-session”的文档 (2认同)