javascript - 使用 Vue CLI 在 Node js 上进行 Express session

标签 javascript node.js express vue.js

我正在为我用 Vue 开发的应用程序编写一个 Nodejs 后端应用程序。我需要为用户的数据库操作创建 session ,并根据用户选择数据库。我想为此使用快速 session ,但我创建的 session 在不同的请求中被视为未定义。我怎样才能克服这个问题?我在 Vue 上使用历史记录模式,因此我的请求现在必须通过路由器。我还可以表达我对其他建议持开放态度。

const express = require('express')
const app = express()
const productRequest = require("./controllers/products/products")
const customerRequest = require("./controllers/customers/customers")
const orderRequest = require("./controllers/orders/orders")
const controllerRequest = require("./controllers/controllers")
const swaggerUi = require('swagger-ui-express');
const swaggerDocument = require('./swagger.json');
var session = require('express-session')
const cors = require("cors")

app.set('trust proxy', 1) // trust first proxy
app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true,
    cookie: { secure: true }
}))

app.use(express.json());
app.use(cors());
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocument));
app.use('/products', productRequest)
app.use('/orders', orderRequest)
app.use('/customers', customerRequest)
app.use('/controllers', controllerRequest)
module.exports = app;

const express = require('express');
const controllers = express.Router();
const login = require('./login.js')
const userkey = require("./userkey");

controllers.post("/login", (req, res, next) => {
    login(req.body, response => {
        if (response[0].total == 0) {
            res.status(204).json({
                message: "Fail",
                result: null
            })
        } else if (response[0].total == 1) {

            /* SESSION SETTED HERE  */
            req.session.corp = response[0].corp
            console.log(req.session.corp)
            /* HERE SEEMS CREATED */
            res.status(200).json({
                message: "Connected",
                result: response
            })
        }
    })
});
controllers.post("/userkey", (req, res, next) => {

    /* CANT USE HERE response UNDEFINED*/
    console.log(req.session.corp)
    userkey([req.body, req.session.corp], response => {
        res.status(200).json({
            data: response
        })
    })
});
module.exports = controllers;

最佳答案

我在 session 中遇到了一些严重的头痛,并且会继续下去直到我阅读

Also I can convey that I am open to alternative suggestions.

请考虑使用JWT

就这么简单:

var jwt = require('jsonwebtoken');
var token = jwt.sign({ foo: 'bar' }, 'shhhhh');

jsonwebtoken软件包使用简单,应该符合您的需求。

关于javascript - 使用 Vue CLI 在 Node js 上进行 Express session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60981679/

相关文章:

javascript - TypeError 模拟快速响应对象

javascript - 如何在nodejs上将busboy文件流转换为二进制对象

node.js - 使用 npm 安装 Node 扬声器时出错

node.js - 从 Angular 向服务器发送数据时请求正文为空

javascript - 如何创建一个 Angular 分量的独立实例

javascript - Discord 机器人没有获得所有用户

node.js - 提供 css 和 javascript 文件

javascript - 如何从谷歌地图获取纬度和经度?

javascript - 模块模式中的构造函数

php - 在数据到达服务器之前加密数据