ユーザーがログインしたかどうかを確認するために、変数 current_user をグローバルに実装したいので、私はミドルウェアを追加します
app.use(require('./controller/user').auth_user);
user.js で、auth_user use res.locals というメソッドを定義し、グローバル ローカル current_user を設定します。そして、req.session.user=user を設定します。
exports.auth_user = function(req, res, next) {
if (req.session.user) {
res.locals('current_user', req.session.user);
return next();
} else {
var cookie = req.cookies['user_cookie'];
if (!cookie){
res.locals('current_user', "");
return next();
};
var auth_token = decrypt(cookie, 'user_session');
var auth = auth_token.split('\t');
var user_email=auth[3].toLowerCase();
User.findOne({'email': user_email},function(err, result) {
if(err) return next(err);
if (result) {
req.session.user = result;
res.locals('current_user', req.session.user);
return next();
}else{
return next();
}
});
}
};
ということで、req に user オブジェクトを入れてデバッグしたところ、req から user.hashed_password を取得できることがわかりました。安全ではないと思います。ブラウザ側のユーザーはこの情報を取得できますか?