javascript - express4.2.0 session 未定义

标签 javascript node.js session express undefined

我发现使用express4.2.0与node.js设置 session 时遇到麻烦,我向您展示了我的代码,并在我发表评论后:

<小时/>

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);
<小时/>

用户.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”的方法 post 中调用的(以在数据库上查找用户)。

如果我取消注释 res.session.user 行,当我调用 makeTheUserSession 时,应用程序会中断、停止、capito、死亡(无法设置未定义的属性“user”)... 如果我取消注释 res.cookie('user', result... 行,当我调用该函数时,并且在设置上看到浏览器 cookie 后,我发现一个名为 user 的 cookie,其值为 result.result[0] ...但是在 get 方法之后,它并没有按照我的预期工作... res 永远不会向我发送“COOKIE”。

我多次重复看到同样的问题,但我没有看到对我来说有值(value)的答案:有些人谈论连接中间件(我正在使用express),其他人说使用“app.use(express. session(keyword)),但它只适用于旧版本的express。express-session模块已被弃用,我想使用更实际的中间件。

希望得到您的答复。非常感谢。

最佳答案

这是 req.session 而不是 res.session,解决这个问题就可以开始了。

关于javascript - express4.2.0 session 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26208741/

相关文章:

PHP:使用存储为 cookie 的 token 防止 session 劫持?

javascript - 将 AngularJS 应用程序与 Google Analytics 集成

android - 在 Android 中保持用户状态

javascript - 在 Vue.js 中生成动态 img 路径

node.js - express 进入每条路由前如何使用中间件检查授权?

Node.js:查询中的数组

node.js - 运行 `yarn remove <dependency_name>`去除依赖,但是yarn.lock还是显示去除的依赖

PHP:计算 session 中数组的数量

javascript - javaScript的添加有什么问题吗?

Javascript 打印屏幕