0
express.jsとReactを使用します。成功ログイン後、私はuser_id
をセッションに保存しますが、2-3分後にセッションが失われ、ページを更新するとログアウトします。ここで は、フォーム送信後、私は機能/trylogin
とeveything細かい作業を行う私のserver.jsExpress.jsセッションが約3分後に失われる
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'host',
user : 'user',
password : 'password',
database : 'database',
pool : { maxConnections: 50, maxIdleTime: 30},
});
connection.connect(function(error){
if(!!error){
console.log('error');
}else{
console.log('Connected');
}
})
//pluginy
var bodyParser = require('body-parser');
var express = require('express');
var session = require('express-session');
var app = express();
//ustwienia
app.use(bodyParser()); //przesylanie danych w req.body
app.set('trust proxy', 1) // trust first proxy
app.use(session({
secret: 'v8bRRj7XVC6Dvp',
saveUninitialized: true,
resave: true,
cookie: {secure: true}
}));
app.use('/static', express.static(__dirname + '/src'));
app.use('/dist', express.static(__dirname + '/dist'));
app.use('/php', express.static(__dirname + '/php'));
app.set('views', __dirname + '/views');
app.set('view engine','pug');
function checkAuth(req, res, next) {
console.log('User id: '+req.session.user_id);
if (!req.session.user_id) {
if(req.route.path=='/'){
res.render("indexNotLogin",{title:''});
}else{
res.send('You are not authorized to view this page');
}
} else {
next();
}
}
//roots
//index
app.get('/', checkAuth, function(req, res){
res.render("index",{title:''});
})
//funkcje
app.get('/funkcje', function(req, res){
res.render("funkcje",{title:''});
})
//trylogin
app.post('/trylogin', function(req, res){
var username = req.body.name;
var password = req.body.password;
connection.query("SELECT * FROM user WHERE username='"+username+"' AND pass='"+password+"' LIMIT 1", function(error, rows,fields){
//callback
if(!!error){
console.log('error in query');
}else{
if(rows.length){
console.log(rows[0].id)
req.session.user_id = rows[0].id;
res.redirect('/');
}else{
res.send('user dont exist')
}
}
})
})
app.listen(3000,'0.0.0.0', function(){
console.log('Port: 3000')
})
あるreq.session.user_id = rows[0].id
はuser_idのですが、なぜセッションはとても速く失われますか?
私はクッキーを使用する場合: '{確保:真を、MAXAGE:900000}が{' '私のセッションはいけない仕事が、私は設定している場合secure:false、maxAge:900000} 'これは問題ありません。私はこれをどのように修正できるか知っていますか? –
_secure_は基本的にはhttps接続ではなく、httpではない。もしあなたが その必要がないと思うなら、私はあなたが使うべきではないと思う。 – wrangler
私のセッションはまだ同じ問題を働かせていませんねえ...私はスクリプトの最後に '{secure:false、maxAge:900000}'を使っていました。 'app.listen(3000、function(){})'ポストで。なぜこれがまだ2〜3分間だけ機能するのか知っていますか? –