Node.js похоже не помнит мою сессию.Node.js session login
Я использую экспресс с cookie-parser
и express-session
в качестве промежуточного программного обеспечения.
В моем приложении я использую Mongo для хранения имен пользователей и паролей.
Ниже приводится MWE:
var express = require('express');
var cookieParser = require('cookie-parser');
var session = require('express-session');
var app = express();
app.use(cookieParser({
secret: 'derma-aid'
}));
app.use(session({
secret: 'derma-aid',
resave: false,
saveUninitialized: false,
cookie: {secure: false}
}));
// CORS (Cross-Origin Resource Sharing) headers to support Cross-site HTTP requests
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'X-Requested-With');
next();
});
app.get('/login', function(req, res)
{
console.log('login');
req.session.user_id = 500;
res.send('<h1>login</h1>');
});
app.get('/view', function(req, res)
{
console.log('view id: ' + req.session.user_id);
res.send('<h1>view: ' + req.session.user_id + '</h1>');
});
app.get('/logout', function(req, res)
{
console.log('logout: ' + req.session.user_id);
res.send('<h1>logout: ' + req.session.user_id + '</h1>');
delete req.session.user_id;
});
app.listen(5000);
Если вы идете в браузере http://localhost:5000/login
, то req.session.user_id
должен быть установлен и правильно отображаться на http://localhost:5000/view
.
Но, вместо этого, я получаю неопределенные сообщения ...
EDIT:cookie: {secure: false}
как предложено @tiblu. Я получаю эту ошибку: TypeError: Secret string must be provided.
.
О, верно. Теперь он жалуется на 'TypeError: секретная строка должна быть предоставлена. '. –
Мне удалось исправить эту ошибку, которую я получал. Это было связано с использованием 'cookieParser ({secret: 'derma-aid'})', а не просто 'cookieParser ('derma-aid')'. Я запутался, потому что большинство экспресс-библиотек используют словарь для опций. –