2017-04-12 24 views
0

expressjs内のデータ/セッションNodeJS保存する方法:私のユーザーがLOGGEDINあるPOST情報との間で行われ(検証たらapp.js、index.js(路線)、Users.js(コントローラ)私は3つのファイル持って

をDB)expressjs/sessionを使ってセッションにデータを保存したい。ここで

はapp.jsの私のセッションの宣言である:ここで

var session = require('express-session'); 

    app.use(session({ 
     resave: true, 
     saveUninitialized: true, 
     secret: 'trolololo' 
    })); 

は私のルートです:

router.post('/login', function(req, res, next) { 
    Users.login(req, res); 
}); 

router.get('/getSessionInfos', function(req,res,next){ 
    console.log(req.session); 
}); 

そして、ここでは、ログインするためのコントローラである:

login : function(req, res){ 
     var formEmail = req.body.email; 
     var formPassword = req.body.password; 

     User.findOne({ where: {email: formEmail} }).then(function(user) { 
      if(user){ 
       if (user.password == formPassword){ 
        console.log('User connected'); 
        req.session.email = formEmail; 
        req.session.password = formPassword; 
        console.log(req.session); 
        res.status(200).send('User Authentified'); 
       }else{ 
        res.status(401).send('Invalid Password'); 
       } 
      }else{ 
       res.status(401).send('Username'); 
      } 
     }); 
    }, 

ログインが動作する200のステータスが表示され、ログイン機能のconsole.logにmy in fos。しかし、私はそれが空である/ getSessionInfosのURLから私のセッションを取得しようとすると...助けを送ってください

+0

は、 '/ getSessionInfos'のコード全体ですか?あなたはコンソールに出力するだけで何も返さない – Gntem

+0

私はexpressjs/sessionのドキュメントから、セッションは常にreq.session.something経由でフェッチされていると想定しています。セッションオブジェクトを取得したとは言っても空です。しかし、はい、これはすべて/ getSessionInfosにあります。 –

答えて

0

あなたのコードは、セッションを保存しているとしてだけでいくつかの変更

app.use(session({ 
secret : 'yourSecret', 
resave : false, 
saveUninitialized : false, 
})); 

が最初にログインすることを忘れないで正しいと思われますそれ以上の値を指定すると、必ず電子メールとパスワードのキーでオブジェクトが表示されます。 問題が発生した場合は教えてください。

0

あなたはこれを尋ねなかったのは分かっていますが、どちらの方法でもセッションはノードでは推奨されません.jsonのWebトークンはほとんどが王座です.JSONのデータは署名されていますフォーマット。署名されているので、受信者はその真正性を検証することができます。それはJSONなので、重さはほとんどありません。

非常に単純な言葉で言えば、JWTは、ユーザーを認証するためにサーバーにセッションデータを保存する必要がないため、クールです。

  • ユーザーは通常、ユーザ名と パスワードを送信し、認証サービスを呼び出します。
    • 認証サービスは、ユーザーが という署名付きJWTで応答します。
    • ユーザーはトークンを送信しているセキュリティ保護されたサービスにアクセスを要求します。
    • セキュリティ層はトークンの署名をチェックし、本物であれば アクセスが許可されます。あなたがNPMにJWT-簡単な使用することができます

関連する問題