Я пытаюсь настроить простой вход в паспорт, используя узел, выражать и угловато. У меня проблемы с продолжением сеансов, я думаю, потому что это не настройка cookie браузера, но почему?Экспресс SessionID не является постоянным, нет cookie браузера
В моем браузере нет файла cookie, а sessionID, распознаваемый узлом, отличается от каждого запроса.
Это используется Экспресс 4, который кажется довольно существенно отличным от Exp3. Я думаю, что это может иметь какое-то отношение к настройке middlware или конфигурации хранилища сеансов. Я пытаюсь уйти с обработкой по умолчанию, которая, я думаю, является MemoryStore в Exp4, но она, похоже, не работает.
Также следует упомянуть, что статический HTML/CSS обслуживается apache, а не узлом. Узел просто настроен для вызовов API.
Вот соответствующие строки из package.json.
"dependencies": {
"bcrypt-nodejs": "0.0.3",
"body-parser": "^1.10.1",
"connect-flash": "^0.1.1",
"cookie-parser": "^1.3.3",
"express": "^4.11.0",
"express-session": "^1.10.1",
"mongoose": "^3.8.21",
"morgan": "^1.5.1",
"passport": "^0.2.1"
}
И установки промежуточного
var express = require('express');
var morgan = require('morgan');
var mongoose = require('mongoose');
var passport = require('passport');
var flash = require('connect-flash');
var app = express();
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
...
app.use(morgan('dev')); // log every request to the console
app.use(cookieParser()); // read cookies (needed for auth)
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(session({
secret: 'DGUBJH7H6G6GTF5R53R54RSBH',
resave: true,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
require('./config/routes.js')(app, passport);
Маршруты
app.post('/login', passport.authenticate('local-login'), function(req, res) {
var user = req.user;
res.send(user);
});
app.get('/user', isLoggedIn, function (req, res) {
var user = req.user;
res.send(user);
});
function isLoggedIn(req, res, next) {
var user = req.user;
// if user is authenticated in the session, carry on
if (req.isAuthenticated())
return next();
res.status(403).send();
}
Я мог бы также разместить код паспорта с сериализации и десериализации функций , но я не уверен, что они для этого важно. Мне просто нужно выяснить, почему этот код не устанавливает файлы cookie браузера! Любая помощь будет принята с благодарностью!
Я говорю конкретно о сессионных файлах cookie, которые, как я надеюсь, будут обрабатываться промежуточным программным обеспечением сеанса, если я не ошибаюсь. Нормально ли, что вам приходится устанавливать свои собственные cookie сеанса даже при использовании всего этого промежуточного программного обеспечения? –