пользователь сеанса иногда имеет значение, иногда неопределенное - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть небольшая проблема, и я уже потратил один день, пытаясь решить ее безрезультатно.Я использовал passport.js, и логин и сессия работают хорошо, если я получаю доступ к адресу без логина, то меня выгонят на страницу авторизации.Но у меня есть небольшая проблема, когда я заполняю источник данных datatable ( cart.html ) маршрутизацией из index.js , req.session.user будетне определено.Но я проверил cart.html в маршрутизации index.js , у него есть значение.Я был бы признателен всем, кто может мне помочь, заранее спасибо.

Вот мой маршрут cart.html из index.js

app.get('/cart',(req,res)=>{
    //res.render('cart');
    if (req.session.user) {
        var userdata=req.session.passport.user;
        res.render('cart',{username: userdata[0].USER,level:userdata[0].IDLEVEL});
    }else {
        res.redirect('/login');
    }
});

здесь мой паспорт:

passport.use(new LocalStrategy({passReqToCallback: true},
    function(req,username, password, done) {
        db.getConnection(function (err, connection) {
            SQL="SELECT * FROM muser WHERE USER = ? and PASSWORD = ?";
            connection.query(SQL, [username, password], function (err, rows) {
                connection.release();
                if(err) return done(err);

                // if user not found
                if (rows.length <= 0) {
                    return done('Cannot login');
                    //console.log(username+' '+password);
                }
                req.session.user=rows;
                return done(null, rows);
            });
        });
    }
));

passport.serializeUser(function(user, done) {
    done(null, user);
});

passport.deserializeUser(function(id, done) {
    db.getConnection(function (err, connection) {
        connection.query('SELECT * FROM muser WHERE ID = ?', [id], function(err, user) {
            connection.release();

            if(err) return done(err);
            done(null, user);
        });
    });
});

function isAuthenticated(req, res, next) {
    if (req.isAuthenticated()) return next();
    res.redirect('/login');
}

app.get('/', isAuthenticated, function(req, res) {
    res.render('home');
});

app.use(passport.initialize());
app.use(passport.session());

app.post('/login',
    passport.authenticate('local', {
        failureRedirect: '/login' }),
    function(req, res) {
        if (req.isAuthenticated()) {
            res.redirect('/home');
        }else {
            res.redirect('/');
        }
    }
);

здесь мои cart.html коды

            $("#dgcart").DataGrid({
                dataSource: "http://192.168.10.120:5556/getcart" (routing below to get data of cart)
...});

здесь моя ошибка не может получить доступ req.session.user будет неопределенным

app.get('/getcart',(req,res)=>{
    if (req.session.user) {
        var userdata=req.session.passport.user;
        SQL="SELECT TC.ID,TC.IDITEM,TC.KODEBARANG,TC.NAMA,SUM(TC.QTY) AS QTY,TC.PRICE, TC.SUBTOTAL"+'\n'+
            "FROM cart TC "+'\n'+
            "WHERE TC.IDUSER="+userdata[0].ID+'\n'+
            "GROUP BY TC.KODEBARANG,TC.IDITEM,TC.KODEBARANG,TC.NAMA,TC.PRICE,TC.SUBTOTAL,TC.IDUSER";
        rowsalasql=alasql(SQL);
        console.log(SQL+' '+rowsalasql);
        res.send(JSON.stringify(rowsalasql));
    }else {
        ... will be here because undefined
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...