我发现使用express4.2.0设置与node.js的会话有困难我给你看了我的代码并在我评论之后:
var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var cookieSession = require('cookie-session');
var mainModel = require('./model/main_model');
var users = require('./routes/users');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieSession({
keys: ['secret1', 'secret2']
}));
app.use('/users', users);
/*Evething that express makes automatically*/
app.listen(8080);
var express = require('express');
var router = express.Router();
router.get('/', function(req, res)
{
if(req.cookie && req.cookie.user) res.send("COOKIE");
else if(req.session && req.session.user) res.send("SESSION");
else res.render('users/new_user', {title:"NEW USER"});
});
/*there is more content... but not relevant. */
function makeTheUserSession(result, res)
{
result['go'] = '/users';
//res.session.user = result.result[0];
//res.cookie('user', result.result[0]);
res.send(result);
}
函数makeTheUserSession是从'/ users'的方法帖子调用的(用于在数据库中查找用户)。
如果我取消注释res.session.user行,当我调用makeTheUserSession应用程序中断,停止,capito,dead(无法设置属性'user'为undefined)... 如果我取消注释res.cookie('user',result ...行,当我调用该函数时,在我看到设置上的浏览器cookie后,我发现了一个名为user的cookie,其值为result.result [0] ...但是在使用get方法之后,它无法实现我的预期... res永远不会向我发送“COOKIE”。
我曾经多次重复同样的问题,但我没有看到一个值得我回答的问题:有些人谈论连接中间件(我使用快递),其他人说要使用“app.use(快递。 session(keyword))但它只适用于旧版本的express。快速会话模块已弃用,我想使用更实用的中间件。
我希望你的回答。非常感谢你。
答案 0 :(得分:1)
req.session
而不是res.session
,解决这个问题,你应该好好去。