2016-08-08 5 views
0

私は自分のアプリケーションにJWTを使用していると私はそうのような私の主張を定義します。JWTとサーバサイドセッションを維持する方法はありますか?

const claims = { 
    iss: process.env.DOMAIN, // The URL of your service 
    sub: user.email, // The UID of the user in your system 
    scope: "game", 
    email: user.email 
}; 

これが正常に動作しますが、私は上でそれを利用できるようにクレームの対象にセッションデータを追加するという考え方が好きではありませんフロントエンドも。代わりに、私のような、唯一のバックエンドで、特定のセッションデータを保存しておきたい:

nJwt.verify(socket.handshake.query.token, app.get("jwt.secret"), (err, decoded) => { 
    if (err) return; 
    // pseudo code 
    Session.of(decoded.body.email).get("cheater_accuracy"); // 0.48912715 
}); 

私にとっての理想的なアプローチは、特許請求の範囲は、このような単純なオブジェクトを維持することになります。

const claims = { 
    iss: process.env.DOMAIN, 
    sub: user.email, 
    scope: "game", 
    email: user.email 
}; 

、すべてのセッションデータを保持しますバックエンドでのみ、いつでもトークンによって参照されます。

これを行う方法はありますか?

答えて

0

Redisを使用してセッションデータを保存し、トークンでアクセスできます。トークンを発行する際に値を保存するにはSETを使用し、照合時には戻すにはGETを使用してください。

0

私は特急セッションべき作品だと思い、使い方は一般的です:http://blog.modulus.io/nodejs-and-express-sessions

app.use(express.cookieParser()); 
app.use(express.session({secret: 'yoursecretword'})); 


app.get('/some-page', function(req, res) { 
    req.session.lastPage = '/laspage'; 
    res.send('Some response'); 
}); 

は見てみましょう

関連する問題