2017-01-20 5 views
0

私はNodeJSとExpressJSを新しくしており、main.jsでセッション管理フローを取得しようとしています。メインでのNodeJSセッション管理

app.get('*', function(req, res){ 
    var page = getPage(); 

    session_.initSession(req, res, function(){ 
     loggedIn = false; 
     if(req.session && typeof req.session.username !== "undefined"){ 
      loggedIn = true; 
      userFName = req.session.first_name; 
      userLName = req.session.last_name; 
     } 
     if(!loggedIn){ 
      res.render('pages/login', { message: "<div class='notice centered' style='width: 40%;'>Please login</div>" }); 
      returnFlag = true; 
      return; 
     } else { 
      if (page.length < 1){ 
       // render index page here ... 
       returnFlag = true; 
       return; 
      } 

      // render 'test' page 
      if(page == 'test'){ 
       // do test functions here... 

       returnFlag = true; 
       return; 
      } 
     } 
    }); 

    if(returnFlag == true){ 
     return; 
    } 

    res.render('partials/home', { message: "404 not found (unknown page GET request)" }); 
    return; 
}); 

app.post('*', files, function(req, res){ 
    var page = getPage(); 

    if(page == 'test'){ 
     // do test functions here... 

     returnFlag = true; 
     return; 
    } 

    if(returnFlag == true){ 
     return; 
    } 

    res.render('partials/home', { message: "404 not found (unknown page POST request)" }); 
    return; 
}); 

をこれに伴う問題は、セッションが所定の位置にない場合でもPOSTリクエストが処理されているということです。私は現在、それが働いて持って何

。私はapp.allを追加しようとしました/ app.getとapp.postコードブロックの上にブロックを使用してセッションを設定しようとしましたが、app.get/postブロックは処理されませんでした。これを構成する最適な方法は何ですか?すべての要求はセッション管理によってフィルタリングされ、適切なセッションが存在する場合はページ要求ブロックにフィルタリングされます。

答えて

1

エクスプレスのミドルウェア機能があなたの探しているものです。

ミドルウェア機能は、アプリケーションの要求応答サイクルで要求オブジェクト(req)、応答オブジェクト(res)、および次のミドルウェア機能にアクセスできる機能です。次のミドルウェア機能は、通常、nextという名前の変数で表されます。

は、Expressの文書からより多くを学ぶ - here

Aミドルウェアは、ラインにチェーンを接続することができ、あなたがそれで書く順番に処理されている限り、あなたは、「次へ」変数を実行するとして、あなたがリンクすることができます。あなたが好きなだけ多くの

したがって、POST要求が実際に処理される前に、ユーザーを終了してリダイレクトしたり、次の変数を実行して処理を続行することができます。

ここでは、コードを簡略化する方法の例を示します。

function _sessionAuthorization(req, res, next) { 

    if(typeof req.session.username == "undefined") { 
     return res.redirect("/login"); 
    } else { 
     next(); 
    } 

} 


app.get('*', function(req, res){ 
    res.render('partials/home', { message: "404 not found (unknown page GET request)" }); 
}); 

app.post('*', files, _sessionAuthorization, function(req, res){ 
    res.render('partials/home', { message: "404 not found (unknown page POST request)" }); 
}); 
+0

ありがとう、ブレイク!それはそれを世話しました。 – user6041966