1

Express "express": "~4.13.1" と "express-session": "^1.11.3" を使用しています。サーバーを次のように設定しました:

app.js :

var express = require('express');
var session = require('express-session');
var bodyParser = require('body-parser');
var cookieParser = require('cookie-parser');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var routes = require('./routes/index');
var users = require('./routes/users');
app = express();

// view engine setup
var engines = require('consolidate');
app.set('views', path.join(__dirname, 'views'));
app.engine('html', engines.mustache);
app.set('view engine', 'html');

 // uncomment after placing your favicon in /public
 //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
 app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
      extended: false
 }));
 app.use(cookieParser());
 app.use(express.static(path.join(__dirname, 'public')));

//Using express-session in app with secret key
 app.use(session({
secret: 'mapdcs',
resave: true,
saveUninitialized: true,    
cookie: {
    path: '/',
    httpOnly: true,
    secure: false,
    maxAge: null
}
}));


app.use('/', routes);

app.use('/api/users', users);

index.js :

  // First call
  router.post('/adduser', function(req, res, next) {
    req.session.username = red.body.username;
    req.session.save();
    console.log('>>Session data From Add users');
    console.log(req.session); //I got the username session here
  }
  // Second call
  router.post('/check_auth', function(req, res, next) {
     console.log('>> Session data From check_auth');
     console.log(req.session); //Am not getting session here.
  }

過去 2 日間からこの問題を解決しようとしています。誰でもこれを手伝ってくれませんか。前もって感謝します。

4

2 に答える 2

2

ルーター呼び出しの後に閉じ括弧 ')' が欠落しているようですが、それが主な問題ではないと思います。リクエストが応答を送信しない/正しく終了しないことに関係があります。

console.log(req.session) を、res.json(req.session) などの応答を送信するものに変更すると、2 番目の呼び出しが機能します。以下の例を参照してください。

 router.post('/adduser', function(req, res, next) {
   req.session.username = red.body.username;
   req.session.save();
   console.log('>>Session data From Add users');
   // changed console.log to res.json 
   res.json(req.session)
 }); // Added the final closing bracket to router.post

// Second call
  router.post('/check_auth', function(req, res, next) {
     console.log('>> Session data From check_auth');
     // Changed the second console.log to res.json
     res.json(req.session);
  }) // Added another closing bracket

お役に立てれば!

編集: res.end()、res.send()、または res.render() を使用することもできます - 応答を生成するものは何でも - Express response docsを参照してください。

于 2015-10-24T07:08:15.813 に答える