Express Сеанс на Node js с Vue CLI - PullRequest
0 голосов
/ 02 апреля 2020

Я пишу nodejs бэкэнд-приложение для приложения, разработанного с помощью Vue. Мне нужно создать сеансы для работы с базами данных пользователей и выбрать базы данных в соответствии с пользователем. Я хотел использовать для этого express -сессию, но созданные мной сеансы видятся неопределенными в разных запросах. Как я могу преодолеть эту проблему? Я использую режим истории на Vue, поэтому мои запросы на данный момент должны go через маршрутизатор. Также я могу сообщить, что я открыт для альтернативных предложений.

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;

1 Ответ

1 голос
/ 02 апреля 2020

У меня были сильные головные боли во время сессий, и я продолжал, пока не прочитал

Также я могу сказать, что я открыт для альтернативных предложений.

Пожалуйста, рассмотрите возможность использования JWT

так просто:

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

Пакет jsonwebtoken прост в использовании и должен соответствовать вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...