2016-10-29 5 views
0

req.isAuthenticated()で認証状態を確認してから、trueまたはfalseとしてensureAuthenticatedを返します。私の問題は、コンソールに何も記録されていないため、私のensureAuthenticated関数が正しく動作していないようです。認証関数への戻り値が正しく機能していないようです

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

    if (ensureAuthenticated()) { 
     console.log('logged in') 
     } else { 
     console.log('not logged') 
    } 

}); 



function ensureAuthenticated(req, res, next) { 

    Authenticate(); 

    function Authenticate() { 
     if (req.isAuthenticated()) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    return Authenticate; 
} 

答えて

0

あなたはsureAuthenticatedから値を返していません。あなたが達成していると思うものを不明確だ、

function ensureAuthenticated(req, res, next) { 
    return req.isAuthenticated(); 
} 

しかし:

function ensureAuthenticated(req, res, next) { 

    function Authenticate() { 
     if (req.isAuthenticated()) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    return Authenticate(); 
} 

それとも、あなたは完全に内部関数を取り除くことができます。そして、あなたがこれを行うことができ、これですべてが同期していると仮定すると、ミドルウェアハンドラからtrueまたはfalseを返すことにより、 ensureAuthenticatedハンドラーで実際に何を達成しようとしていますか?

ミドルウェアの例here in the Express docが表示されます。典型的なミドルウェアハンドラは応答を送信するか、next()を呼び出してチェーンの制御を次のハンドラに渡します。

関連する問題