【问题标题】:ExpressJS sessions with cookies带有 cookie 的 ExpressJS 会话
【发布时间】:2014-07-29 06:03:19
【问题描述】:

我正在尝试使用 cookie 来建立与 ExpressJS 4.2 和 cookie-parser 的用户会话,但我找到的所有文档都是针对 Expressjs 3.x 或更早版本的。

有人能指出我正确的方向吗?

文档或代码 sn-p 将不胜感激。

提前致谢!

======

我想使用 PassportJS 通过 MongoDB 对本地用户进行身份验证,除此路由外一切正常(确保 Authenticatad 始终重定向到 /,即使在 MongoDB 中找到用户/密码

// reusable middleware
function ensureAuthenticated(req,res,next) {
    if(req.isAuthenticated()) {return next();}
        res.redirect('/'); // if failed...
    }


router.get('/panel', ensureAuthenticated,function(req, res){

    res.render('panel', {obj: testArr});

});

那是因为 ensureAuthenticated 找不到活动的 cookie。

我的 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 passport     = require('passport')
var mongoose     = require('mongoose');
var flash        = require('connect-flash');


//Routes
//=====================================================================
var routes = require('./routes/index');
var admin  = require('./routes/admin');
var panel  = require('./routes/panel');



//Express configuration
//======================================================================
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

/*app.use(favicon());*/
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser('secret'));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/', admin);

【问题讨论】:

  • 你能准确地展示你想要做什么吗?他们在parser 上的文档与 3.x 几乎相同。
  • 是的,让我编辑原始问题。

标签: node.js session cookies express


【解决方案1】:

您需要使用 https://www.npmjs.org/package/express-session 来初始化基于 cookie 的会话

var session = require('express-session');
//code
app.use(session({secret: 'keyboard cat'}));

【讨论】:

  • 感谢我的回答:"express-session": "latest", app.use(session({secret: 'keyboard cat'}));但问题仍然存在,我已登录,设置了 cookie 但我仍然从 /panel 得到 304
  • 在 passportjs 初始化之前初始化它。我正在发送链接它对我的工作方式github.com/vodolaz095/hunt/blob/master/lib/generators/http/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-25
  • 2012-02-20
  • 2017-07-14
  • 1970-01-01
  • 2020-11-22
  • 2016-04-30
相关资源
最近更新 更多