私は単純なログイン機能を実装しており、エクスプレスセッションにデータを保存していますが、戻すことはできません。 ログイン機能のloginDb.jsファイルで、セッション変数にuserIdを保存しています.getLoginStatus関数でuserIdにアクセスしようとしていますが、定義されていないとしてreturingしています。Node.js express-sessionに追加された変数は、次のリクエストでは未定義です
私は似たような問題に関連して多くの投稿を行ってきましたが、私の場合は何も助けませんでした。私がここで間違っていることを知りません。以下はコードです。
server.js
var express = require('express');
var pg = require('pg');
var cookieParser = require('cookie-parser');
var bodyparser = require('body-parser');
var session = require('express-session');
var path = require('path');
const port = 3000;
const loginroute = require('./Routes/login');
var app=express();
app.use(bodyparser.json());
app.use(bodyparser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(session({
secret: 'This is a secret',
resave: true,
saveUninitialized:true,
cookie: {
secure: false,
maxAge: 60000
}
}));
//Routes
app.use('/api/loginroute',loginroute);
app.listen(port,function(){
console.log('app listening to port:'+port);
});
login.js
const express = require('express');
const router = express.Router();
const db = require('../DataAccessLayer/loginDb');
router.get('/getLoginStatus', db.getLoginStatus);
router.post('/login', db.login);
module.exports = router;
設定しloginDb.js
var config = require('../Config/config');
var session = require('express-session');
var pg = require('pg');
var pool = new pg.Pool(config.development.db);
function getLoginStatus(req, res, next){
var userId = req.session.userId;
};
function login(req, res, next) {
pool.connect(function(err, client, done) {
if (err) {
console.log("not able to get connection "+ err);
res.status(400).send(err);
}
var q = "select id from nodetest.users where name=$1 and password=$2";
client.query(q, [req.body.username, req.body.password], function(err, result) {
done();
if(err) {
return console.error('error running query', err);
}
if(result.rowCount>0){
req.session.userId = result.rows[0].id;
}
res.send(result.rows);
});
});
};
module.exports = {
login:login,
getLoginStatus:getLoginStatus
};
どのように '/ getLoginStatus'を呼びますか? – robertklep
私はhttp:// localhost:3000/api/loginroute/getLoginStatus –
のような私のURLがサービスである角度4のhttp getメソッドから呼び出しています。その場合は、要求と共に資格情報を送信するように設定されていることを確認してください。 – robertklep