Javascript ExpressJS和VueJS:如何将express会话与Vue和Vuex存储一起使用
我正在开发一个带有登录名和另一个视图的应用程序。我想访问任何Vue组件中的express会话 我正在使用ExpressJS创建API和express会话包 这是我的app.js文件:Javascript ExpressJS和VueJS:如何将express会话与Vue和Vuex存储一起使用,javascript,node.js,express,vue.js,express-session,Javascript,Node.js,Express,Vue.js,Express Session,我正在开发一个带有登录名和另一个视图的应用程序。我想访问任何Vue组件中的express会话 我正在使用ExpressJS创建API和express会话包 这是我的app.js文件: const express = require('express'); const api = require('./api'); const bodyParser = require('body-parser'); const morgan = require('morgan'); const session =
const express = require('express');
const api = require('./api');
const bodyParser = require('body-parser');
const morgan = require('morgan');
const session = require("express-session");
const cookieParser = require('cookie-parser');
const cors = require('cors');
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/myDatabase');
const db = mongoose.connection;
const app = express();
app.use(cookieParser())
app.use(session({
secret: 'secretKey',
resave: true,
saveUninitialized: true,
cookie: { secure: true }
}))
app.set('port', (process.env.PORT || 8081));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors({
credentials: true
}));
app.use('/api', api);
app.use(express.static('static'));
app.use(morgan('dev'));
app.use(function(request, response, next) {
const err = new Error('Not Found');
err.status = 404;
response.json(err);
})
db.on('error', console.error.bind(console, 'Connection error'));
db.once('open', function() {
console.log('Connected to MongoDB');
app.listen(app.get('port'), function() {
console.log('API Server Listening on port ' + app.get('port'));
});
});
然后在路由器中,当用户登录时,我发出request.session.user=user
router.post('/user/loginUser', function(request, response) {
User.find({ 'email': request.body.email })
.exec()
.then((user) => {
response.status(200);
request.session.user = user;
response.json(user);
}).catch((err) => {
response.status(200);
response.json({ message: 'Error user not registered', error: err });
})
});
然后在另一个组件中,使用Vue生命周期挂钩创建时,我希望从express session对象读取用户
router.post('/user/getUser', function(request, response) {
console.log('request.session :>> ', request.session);
User.findById(request.session.user._id)
.exec()
.then((user) => {
response.status(200);
request.session.user = user;
response.json(user);
}).catch((err) => {
response.status(200);
response.json({ message: 'Error user not registered', error: err });
})
});
但是当我打印request.session对象时,用户对象不会出现
request.session :>> Session { cookie: {
path: '/',
_expires: null,
originalMaxAge: null,
httpOnly: true,
secure: true } }
这是getUser请求的console.log结果
是否有办法使用express session访问Vue组件之间的会话?我之所以需要它,是因为当用户登录时,我必须阅读用户的所有笔记,至少没有_id,我无法完成
提前感谢。一般来说,设置这样的会话cookie,然后通过另一条路径访问它是没有问题的。您是否已成功地将cookie与用户一起登录到
登录用户
getUser
是多余的,顺便说一句,你可以让应用程序保存在LogiUser
中返回的用户数据@Dan问题是,当我想从getUser请求中访问request.session.user时,用户是未定义的,我写的所有内容都与mindSo中的内容一致,如何将用户从一个商店传递到另一个商店?与您所做的完全相同。设置cookie,然后稍后访问它。你应该再读一遍我的第一条评论,然后回答问题