1

Expressアプリでexpress.session()を使用しているので、認証ユーザー用のミドルウェアを作成してから'/'に送信します。コードは次のとおりです。

var express = require('express');

app.configure(function(){
  app.use(express.cookieParser('keyboard cat'));
  app.use(express.session( {secret : "my secret"}));
  app.use(app.router);
});

var accessChecker= function(req,res,next){
    if (req.session.user.name && req.session.auth){
    next(); 
    }else{
    res.redirect('/login');
    }
   }
app.get('/',accessChecker(), routes.index);

このコードを実行すると、次のメッセージが表示されます。

if (req.session.user.name && req.session.auth){
       ^
TypeError: Cannot read property 'session' of undefined

app.configureの前 にaccessChecker関数を配置し、 acessChecker関数内でexpress.cookieParser ()express.session( ) を使用しようとしましたが、常に同じメッセージが表示されます。

4

1 に答える 1

4

accessChecker関数へのポインタを渡すのではなく、関数を呼び出しています。これで問題が解決します。

app.get('/', accessChecker, routes.index);

その他の例については、ドキュメントを参照してください。認証を行う場合は、パスポートも確認することをお勧めします

于 2012-11-08T17:52:01.290 に答える