現在のユーザーを格納するNodeJSアプリケーションでセッション変数を設定しようとしています。NodeJS変数セッションが定義されていません
残念ながら、私はいつも次のエラーを取得する:
TypeError: Cannot set property 'user' of undefined
私の必須の一つは、それが学生のプロジェクトであるように私には、セッションを保存するためにデータベースを使用してはならないと私は尋ねたアーキテクチャを尊重しなければならないということです。ここで
が、私は私のユーザーをログインするために使用する機能です。
this.POSTLogin =function POSTLogin(LoginInformations,res,req){
//prepare request
var args = {
data:{username:LoginInformations.username,password:LoginInformations.password},
headers:{"Content-Type":"application/json"}
};
//check if credentials are valid
client.post(this.restBaseUrl+"users/login",args,function(data,response){
//logs for debug purpose
console.log(data);
console.log(response);
//if there is a user
if(response.statusCode == 200){
var usr = new User();
usr.email = data.email ;
usr.facebookData= data.facebookData;
usr.firstName = data.firstName ;
usr.id = data.id ;
usr.lastName = data.lastName ;
usr.restToken = data.restToken ;
usr.role = data.role ;
usr.sessions = data.sessions ;
var Rest = new RestService();
//this line doesn't work
req.session.user = usr;
//redirect to his personal page with data
Rest.GETPersonalStats(usr,res);
}else{
//is there is no user with those credentials, send it to login page again
res.redirect('/users');
}
});
};
私はセッションにデータを保存しようとしていないよ場合には、予想通り、すべてが動作します。
このファイルの開始時に、私が持っている:
var session = require('client-sessions');
var express = require('express');
var app = express();
app.use(session({
cookieName: 'session',
secret: 'someRandomString',
duration: 30 * 60 * 1000,
activeDuration: 5 * 60 * 1000
}));
私はpackage.jsonファイルに「クライアント・セッション」を追加しました。 これに基づいて私はこのarticleに従った。
編集: @Shoyeb Memonの回答に基づいて、私はcookie-sessionを使用するように変更しました。私はセッションを実装するためにthisを使用 ...
var cookieParser = require('cookie-parser');
var cookieSession = require('cookie-session');
var app = express();
app.use(cookieParser('akey'));
app.use(cookieSession({
name:'session',
keys:['akey'],
maxAge: 24 * 60 * 60 * 1000
}));
が、エラーは全く変化しなかった:私は今、私の宣言でこれを持っています。
EDIT 2:私は私のコード最初の時間を変更し 、私はコピー&ペーストせずにそれをやってみたかった、と私はオンラインの指示に従いました。しかし、私はコピー貼り付けを試みましたが、私は "店"を取り除きました。今はうまくいくようです。