2016-05-24 12 views
0

私はエクスプレスセッションを使用する単純なアプリケーションを持っています。ここに私がセッションを開始する私のエントリースクリプトがあります。`req.session.secret`はexpress-sessionを使用するルートで定義されていません

export const app = express(); 
export const server = Server(app); 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(cookieParser()); 
app.use(session({ 
    secret: "changed to nonsense string for this question", 
    resave: true, 
    saveUninitialized: true, 
    cookie: { maxAge: 60000 } 
})); 
app.use('/api/v1/auth', require('./users')); 

documents of express-sessionによると、私はこれはreq.sessionを経由してアクセスすることができるはずです。私は1つのルート内でjsonトークンを作成するための秘密鍵を取得したい。私がしていることは次のとおりです。

export const routes = Router(); 
routes.post('/login', function (req, res, next) { 
    // ... 
    const token = jwt.sign(user, req.session.secret, { expiresIn: '5m' }); 
}); 

export default routes; 

しかし、一貫してreq.session.secretは定義されていません。私は間違って何をしていますか?ルート内でセッションシークレットにアクセスするにはどうすればよいですか?

答えて

1

secretexpress-sessionの設定の一部ですが、req.sessionでアクセスできません(これは意図していると思います)。

ルートからアクセスする方法は、最初から秘密を取得する場所によって異なります。通常、これは環境変数や設定変数からのもので、ルートハンドラから直接アクセスすることはできません。

シークレットがハードコーディングされていて、そのままにしたい場合は、シークレットが必要な場所であればどこでもrequire()できる別のモジュールを作成できます。

関連する問題