【问题标题】:Express Session on Node js with Vue CLI使用 Vue CLI 在 Node js 上进行 Express Session
【发布时间】:2020-07-13 20:09:31
【问题描述】:

我正在为我用 Vue 开发的应用程序编写一个 nodejs 后端应用程序。我需要为用户的数据库操作创建会话并根据用户选择数据库。我想为此使用 express-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;

【问题讨论】:

    标签: javascript node.js express vue.js


    【解决方案1】:

    我对课程感到非常头疼,并且会一直坚持下去,直到我阅读

    我也可以表达我愿意接受其他建议。

    那么请考虑使用JWT

    就这么简单:

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

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

    【讨论】:

    • 我会用的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2018-10-21
    • 2018-11-23
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多