Как обрабатывать сессию не определено в каждой Ajax-маршрутизации из HTML - PullRequest
0 голосов
/ 15 апреля 2019

Мне было любопытно, почему это произошло, вот мой код:

клиентская часть (ajax jquery javascript):

$( document ).ready(function() {
    $.ajax({
    url: ip+'/getinvoicenumber',
    type: 'GET',
    success: function(data){
       invoiceno=data;
       $("#LblNoInvoice").text("Invoice : "+data);                  
    }
});

серверная часть (index.js) для кода входа в систему:

app.use(cors({origin: "http://localhost:5556",credentials: true}));
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json({limit:1024*1024*20, type:'application/json'}));// global controller
app.use(function (req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
    next();
});

var db = require("./public/js/db_config");
var date = new Date();
var now = new Date(date.getFullYear(), date.getMonth(), 1);
var ipserver=ip.address();
var ispusat="";
var cookieParser = require('cookie-parser');

function checkAuth (req, res, next) {
    // don't serve /secure to those not logged in,you should add to this list, for each and every secure url
    if ((req.url === '/home' || req.url==='/cart') && (!req.session || !req.session.authenticated)) {
        res.render('login', { status: 403 });
        return;
    }
    next();
}

app.set('views',path.join(__dirname,'views'));//set views file
app.set('view engine', 'html');//set view engine
app.engine('html', require('hbs').__express);
app.use('/assets',express.static(__dirname + '/public'));
app.use(cookieParser());
app.use(session({ secret: 'keyboard cat', resave: true, saveUninitialized: true,cookie: {maxAge: 30 * 30000 }}));
app.use(checkAuth);

//login
app.post('/login', function (req, res, next) {
    db.getConnection(function (err, connection) {
        SQL="SELECT TMU.*,TTS.ROLE FROM muser TMU CROSS JOIN tsetting TTS WHERE TMU.USER = ? and TMU.PASSWORD = ?";
        connection.query(SQL, [req.body.username, req.body.password], function (err, rows) {
            connection.release();
            if(err) return done(err);

            // if user not found
            if (rows.length <= 0) {
                console.log('gagal');
                res.redirect('/login');
            }
            req.session.authenticated = true;
            req.session.user=rows;
            res.redirect('/home');
        });
    });
});

сторона сервера (index.js) / getinvoicenumber => выведет неопределенный сеанс в строке console.log (req.session.user);

app.get('/getinvoicenumber',(req,res)=>{
    console.log('- session inv number -');
    console.log(req.session.user);
    console.log('---------------');
    db.getConnection(function (err, connection) {
        SQL='SELECT CASE WHEN MAX(RIGHT(KODETRANS,4)) IS NULL THEN'+'\n'+
            'CONCAT("INV-",EXTRACT(YEAR FROM NOW()),LPAD(EXTRACT(MONTH FROM NOW()),2,"0"),"0001") ELSE'+'\n'+
            'CONCAT("INV-",EXTRACT(YEAR FROM NOW()),LPAD(EXTRACT(MONTH FROM NOW()),2,"0"),LPAD(MAX(RIGHT(KODETRANS,4))+1,4,0))'+'\n'+
            'END AS KODETRANSNEW FROM transjual_h'+'\n'+
            'WHERE SUBSTR(KODETRANS FROM 5 FOR 4)=YEAR(NOW())'+'\n'+
            'AND SUBSTR(KODETRANS FROM 9 FOR 2)=MONTH(NOW())'+'\n'+
            'ORDER BY SUBSTR(KODETRANS FROM 5 FOR 4) DESC,SUBSTR(KODETRANS FROM 9 FOR 2) DESC';
        //console.log(SQL);
        connection.query(SQL, function (err, rows) {
            connection.release();
            if (err) throw err;

            res.send(rows[0].KODETRANSNEW);
        });
    });
});

Но в корзине => пользователь сеанса вывода будет: [{ID: 2, ПОЛЬЗОВАТЕЛЬ: 'SUPERADMIN @', ПАРОЛЬ: '000000', IDLEVEL: 1, DATECREATED: '2017-04-22T09: 32: 04.000Z ', ОБНОВЛЕНО:' 2017-04-22T09: 32: 09.000Z ', ТАМПИЛ:' Y ', РОЛЬ: 2}]

app.get('/cart',(req,res)=>{
    //if (sessionuser) {
    console.log('- sessioncart -');
    console.log(req.session.user);
    console.log('---------------');
    if (req.session.user) {
        res.render('cart',{username: req.session.user[0].USER,level:req.session.user[0].IDLEVEL,ip:ipserver,id:req.session.user[0].ID});
    }else {
        res.redirect('/login');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...