【问题标题】:can not retrieve values from req.session无法从 req.session 中检索值
【发布时间】:2020-06-20 23:43:53
【问题描述】:

我是 nodejs 新手,我正在为我的项目使用 express-session 除了我的登录路径,我无法检索会话值 我看到很多人有同样的问题 任何推荐或帮助都会很棒!你们有一个美好的一天! 这是我的登录路径

route.post('/verify', (req, res) => {
    const email = req.body.email;
    const pass = req.body.password;
    userModel.findOne({ email: email }, (err, data) => {
        if (err) {
            console.log(err);
            res.status(500).json({
                success: false,
                message: error.message
            });
        }
        else {
            if (data !== null) {
                if (!bcryptjs.compareSync(pass, data.password)
                ) {
                    res.status(400).json({
                        success: false,
                        message: "Wrong Password"
                    })
                }
                else {
                    req.session.currentUser = {
                        email: data.email,
                    };

                    console.log(req.session);
                    res.status(200).json({
                        success: true,
                        message: "Login Success",
                        data: {
                            email: data.email,
                            name: data.name,
                            id:data.id,
                        }
                    })
                }
            }
            else {
                res.status(404).json({
                    success: false,
                    message: "Email doesn't exist"
                })
            }
        }

    })
})

这是我的 server.js 设置:

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const cors = require('cors');
const session = require('express-session');
const bcryptjs = require('bcryptjs');
const passport = require('passport');
var Schema = mongoose.Schema;
require('./passport/facebook-auth')(passport);
require('dotenv').config();


const passportSetup = require('./passport/google-auth');
const authRoutes = require('./routes/auth-routes');
const userRoutes = require('./user/user.routes')
const userModel = require('./user/user.schema');


// connect to mongodb
mongoose.connect('mongodb://' + process.env.USER + ':' + process.env.PASS + '@localhost:27017/' + process.env.DATABASE + '?authSource=admin', { useNewUrlParser: true, useUnifiedTopology: true }, (e) => {
    //FIXME: tim cach viet khac
    if (e)
        throw e;
    else {
        console.log("MongoDB Connected...");

        // basic init
        const server = express();
        server.use(session({
            secret: 'keyboard cat',
            resave: true,
            saveUninitialized: false,
        }));
        server.use(express.static('public'));
        // set up cors to allow us to accept requests from our client
        server.use(cors({
                origin: "http://localhost:3000", // allow to server to accept request from different origin
                methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
                credentials: true // allow session cookie from browser to pass through
            })
        );

        server.use(bodyParser.json());

        // set up session cookies


        // initialize passport

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

        // set up route
        server.use('/auth', authRoutes);
        server.use('/users', userRoutes);

        server.listen(process.env.PORT || 5000, (err) => {
            if (err)
                throw err;
            else
                console.log("Server listening on port 5000...");
                console.log('hadm x tanhng...');
                console.log('ununneee here we come');
        });
    }
})

登录后会话自动销毁 再次感谢您

【问题讨论】:

  • 控制台日志的输出是什么。你试过 saveUninitialized: true
  • 这里是 console.log 的输出。在其他路线中,我无法获得 currentUser 值。会话{ cookie:{路径:'/',_expires:null,originalMaxAge:null,httpOnly:true},currentUser:{电子邮件:'tienanh240599@gmail.com'}}会话ne会话{cookie:{路径:'/' , _expires: null, originalMaxAge: null, httpOnly: true } }

标签: javascript node.js reactjs express session


【解决方案1】:

我有问题要问你 - 你能用app.use(sessionMiddleware) 显示代码,其中 sessionMiddleware 是快速会话吗?

【讨论】:

    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多