2017-10-07 6 views
0

私は現在、エクスプレスセッションとエクスプレスセッションを使用して情報を保存しています。私は、ファイル「routes/login.js」で、このようなセッション変数を保存する場合、私はちょうど個別のルートファイルからセッション変数にアクセスする方法

console.log(req.session.user) 

を行い、現在ならば、それは未定義のログに記録されますので、私はその後、「routes/index.js」からその同じ変数にアクセスするにはどうすればよい

req.session.user = "User1" 

が、私は内側から同じことを行う場合は、「routes/login.js」それは「ユーザー1」を記録します

EDIT:

インサイド」01 routes/index.js 'ファイルログに記録されます「

var express = require('express'); 
    var redis = require('redis'); 
    var session = require('express-session'); 
    var RedisStore = require('connect-redis')(session); 

    var router = express.Router(); 
    var client = redis.createClient(); 

    var store = new RedisStore({host: 'localhost', port: 6379, client: client, ttl: 260}); 

    router.use(session({ 
     resave: true, 
     saveUninitialized: true, 
     secret: "secret", 
     store: store 
     })); 

    router.get('/user', function(req, res) { 
     req.session.test = "User1"; 
     res.send(req.session.test); //Logs "User1" 
    }); 

module.exports = router; 

インサイド 『ユーザー1』を記録しますファイル」は未定義

var express = require('express'); 
var router = express.Router(); 
var config = require('../config/config') 

/* GET home page. */ 
router.get('/', function(req, res, next) { 
    console.log(req.session); //Logs undefined 
}); 

module.exports = router; 
+0

'express-session'ミドルウェアと関連するルート、つまり' app.use'や 'app.get'やあなたが使っているものの呼び出しを作成/登録するために使用するコードを含めることができますか? – skirtle

+0

あなたのログインルータ内の 'express-session'ミドルウェアだけを使用しているようですので、そのルータを経由しないリクエストにはセッションがありません。通常は、ミドルウェアを上位に登録して、セッションを必要とするすべての要求を連鎖させます。 – skirtle

+0

これを「上位に」移動する代わりに、関連するコードを別のファイルに入れて、それを必要とするすべてのルートに関連コードを「要求」することができます。 – skirtle

答えて

1

私は私のアプリで明示セッションミドルウェアを使用して、アクセスすることにより、私の問題を解決することができましたそれはルートからのものです。

はインサイド

app.use(session({ 
    resave: true, 
    saveUninitialized: true, 
    secret: "secret", 
    store: store 
})); 

は、今私はますrequest.sessionする変数を保存することができ、それは両方のルートファイルを通じて持続しますapp.js。

関連する問題