javascript - 无法从 req.session 中检索值
问题描述
我是 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');
});
}
})
登录后会话自动销毁再次谢谢
解决方案
我有问题要问你 - 你app.use(sessionMiddleware)
能用 sessionMiddleware 是那个快速会话的地方显示代码吗?
推荐阅读
- eclipse - 带有图标“m”和感叹号的Eclipse项目是什么意思?
- python - 将文件保存在 S3 子文件夹中
- php - 如何从图像路径中删除特定单词
- jquery-isotope - 使用 CSS 网格实现 metafizzy 同位素
- c# - 如何在没有 SetLeft 的情况下以编程方式更改图像位置?
- reactjs - 链接到不再渲染组件
- javascript - Same content on many different Websites
- objective-c - VLCKit无法在objective-c的可可编程中播放视频?
- mysql - Error in inserting comparison 'last modifed date' record between 2 tables into another table
- c - LuaSockets library will not correctly load