Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ExpressJS和VueJS:如何将express会话与Vue和Vuex存储一起使用_Javascript_Node.js_Express_Vue.js_Express Session - Fatal编程技术网

Javascript ExpressJS和VueJS:如何将express会话与Vue和Vuex存储一起使用

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 =

我正在开发一个带有登录名和另一个视图的应用程序。我想访问任何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 = 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,然后稍后访问它。你应该再读一遍我的第一条评论,然后回答问题