express4.2.0 session未定义

时间:2014-10-06 00:48:04

标签: javascript node.js session express undefined

我发现使用express4.2.0设置与node.js的会话有困难我给你看了我的代码并在我评论之后:


APP.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);

USERS.js

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。快速会话模块已弃用,我想使用更实用的中间件。

我希望你的回答。非常感谢你。

1 个答案:

答案 0 :(得分:1)

req.session而不是res.session,解决这个问题,你应该好好去。