После входа в систему Я хочу переназначить/makeitem, для чего требуется открыть сеанс. Это работает, но после отправки формы регистрации я получаю сообщение об ошибке, и я должен обновиться, чтобы ввести/makeitem. Это работало отлично, прежде чем я начал использовать connect-session-sequelize. Файл cookie хранится в db.Sessions сразу, так что часть работает.После того, как я установил сеанс для хранения в db, перед его регистрацией существует задержка. Узел/Экспресс/экспресс-сессия,
Почему это происходит? Нужно ли проверять сеанс где-то еще в моем промежуточном программном обеспечении? Как я могу перенаправить его без каких-либо проблем? Я пропустил что-то очевидное?
Спасибо, и, пожалуйста, не просто ссылку на документы, я весь день смотрю на документы, и они заставляют моего довольно нового программиста причинять боль. Мне нужна любовь и образование.
SERVER.JS
'use strict';
var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var _ = require('underscore');
var app = express();
var db = require('./db.js');
// initalize sequelize with session store
var SequelizeStore = require('connect-session-sequelize')(session.Store);
// if heroku use that, else use 3000
var PORT = process.env.PORT || 3000;
app.use(cookieParser());
// Track logins with express session
app.use(session({
secret: 'Magic mike',
resave: true,
saveUninitialized: false,
store: new SequelizeStore({
db: db.sequelize
})
}));
// Make userId available in templates
app.use(function(req, res, next){
res.locals.currentUser = req.session.userId;
next();
});
....
МАРШРУТЫ/index.js
var express = require('express');
var router = express.Router();
var _ = require('underscore');
var mid = require('../middleware/');
var db = require('../db.js');
.....
// POST /login
router.post('/login', function(req, res, next) {
var body = _.pick(req.body, 'email', 'password');
if (req.body.email && req.body.password) {
db.user.authenticate(body).then(function(user) {
req.session.userId = user.id;
return res.redirect('makeitem');
});
} else {
var err = new Error('All fields required.');
err.status = 400;
err.message = 'All fields required.';
console.log(err.message);
res.send(err.message);
}
});
.....
// GET /makeitem
router.get('/makeitem', mid.requiresLogin, function(req, res, next) {
var body = _.pick(req.body, 'description', 'amount', 'purchased');
return res.render('makeitem.pug');
});
....
MIDDLEWARE/index.js
function loggedOut(req, res, next) {
if (req.session && req.session.userId) {
return res.redirect('/makeitem');
} else {
return next();
}
}
function requiresLogin(req, res, next) {
if (req.session && req.session.userId) {
return next();
} else {
var err = new Error('You must be logged in to view this page');
err.status = 401;
return next(err);
}
}
module.exports.loggedOut = loggedOut;
module.exports.requiresLogin = requiresLogin;
Мои соответствующие зависимости являются:
- "Экспресс": "^ 4.14.0"
- "Экспресс-сессии": "^ 1.14.1"
- "sequelize": "^ 3.5.1"
- "Connect-Session-sequelize": "^ 3.1.0"
- "sequelize": "^ 3.5.1"
- "sqlite3": "^ 3.1.4"