Процесс cookie сеанса пользователя_ Nodejs / паспорт - PullRequest
2 голосов
/ 06 мая 2020

Я пытаюсь создать сеансовые файлы cookie, чтобы сохранить логин пользователя, а затем выполнить некоторую авторизацию для некоторого контента, но проблема в том, что эта система слишком сложна, сеанс, файлы cookie, хранилище «память»

потому что я читал на многих сайтах, что файлы cookie только для сеанса хранят информацию в памяти браузера и доступны в течение сеанса браузера. Другими словами, данные, хранящиеся в сеансе cook ie, доступны с момента сохранения до закрытия браузера. Переход от страницы к странице в это время не стирает данные.

Я пытаюсь создать сеанс для каждого пользователя, использующего паспорт, используя конфигурацию ниже, но мне не удалось,

код сеансов ниже app.js

require('./models/db')
const express = require('express');
const expressLayouts = require('express-ejs-layouts');
const mongoose = require('mongoose');
const passport = require('passport');
const flash = require('connect-flash');
const session = require('express-session');
const bodyParser = require('body-parser')

const app = express();

// Passport Config
require('./config/passport')(passport);


// EJS
app.use(expressLayouts);
app.set('view engine', 'ejs');
app.use('/public/uploads',express.static(__dirname + '/public/uploads'))
// Express body parser
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.json())
app.use(express.urlencoded({ extended: false }))

// Express session
app.use(
  session({
    secret: 'secret',
    resave: true,
    saveUninitialized: true
  })
);

// Passport middleware
app.use(passport.initialize());
app.use(passport.session());

// Connect flash
app.use(flash());

// Global variables
app.use(function(req, res, next) {
  res.locals.success_msg = req.flash('success_msg');
  res.locals.error_msg = req.flash('error_msg');
  res.locals.error = req.flash('error');
  next();
});

// Routes
app.use('/', require('./routes/index.js'));
app.use('/gallery',require('./routes/gallery.js'));
app.use('/users', require('./routes/users.js'));
app.use('/me', require('./routes/publish.js'))
app.use('/api',require('./routes/ChangePassword'));
app.use('/post', require('./routes/home.js'))
const PORT = process.env.PORT || 5000;

app.listen(PORT, console.log(`Server started on port ${PORT}`));

и маршруты для user.js для входа в систему ниже

router.post('/login', (req, res, next) => {
passport.authenticate('local', {
    successRedirect: '/users/home',
    failureRedirect: '/users/login',
    failureFlash: true
  })(req, res, next);
});

Любые рекомендации о том, как достичь этого с помощью эффективного процесс?

С уважением,

1 Ответ

1 голос
/ 07 мая 2020

Помните, что при использовании express. js порядок промежуточного программного обеспечения имеет значение. Вы используете промежуточное ПО E JS до паспорта. js. Вот почему ваши страницы отображаются до инициализации сеанса.

...