res.cookie (имя, значение);Не устанавливать cookie (Express / NodeJs) - PullRequest
0 голосов
/ 20 февраля 2019

Я работаю над веб-приложением, использующим NodeJs, Express Framework и Firebase.После аутентификации с использованием функций firebase на клиенте idToken отправляется на сервер, где создается сессионный cookie, а затем сохраняется в cookie.Однако res.cookie не может сохранить cookie на клиенте.

Фрагменты клиентского auth.js (все 2 принадлежат одному и тому же js-клиентскому файлу)

//Log-in event start
$( "#log-form" ).submit(function( event ) {
        event.preventDefault();
        var email = document.getElementById('emailInput').value;
        var password = document.getElementById('passwordInput').value;
        firebase.auth().signInWithEmailAndPassword(email,password)
            .catch(function(error) {
                    var errorCode = error.code;
                    var errorMessage = error.message;
                    window.alert(errorMessage);
                    })
            .then(function(value) {
                    firebase.auth().currentUser.getIdToken(true)
                            .then(function(idToken) {
                                sendToken(idToken);
                                })
                            .catch(function(error) {
                                console.log(error.message);
                                });
                });
    });//end of log-in event


function sendToken(token)
{
    $.ajax({
            type: 'POST',
            url: '/users/authIn',
            data: {
                'token' : token
            },
            success: function(data){
                console.log(data);
            },
            error: function(errMsg)
                {
                    console.log(errMsg);

                }
        });

 }

Серверсторонний маршрут / users.js код фрагмент

router.post('/authIn', function (req, res, next) {
var token = req.body.token.toString();
var expiresIn=1000*60*60*24;
admin.auth().verifyIdToken(token)
    .then(function(decodedToken){
        firebase.auth().createSessionCookie(token,{expiresIn})
            .then(function(sessionCookie)
                  {
                    res.cookie('session', sessionCookie);
                    res.send("done");
                    })
            .catch(function(error)
                  {
                    res.send(error);

                    });
        res.redirect('/interfacePage');
        })//end of .then
    .catch(function(error){
        res.send(error);
        })
});

Я пытался сделать это в течение нескольких дней безрезультатно.Любая помощь будет принята с благодарностью. И если ваш ответ - это не просто исправление, а обходной путь, пожалуйста, включите код, поскольку я довольно плохо знаком с ajax / express и, возможно, не знаком с некоторыми терминами / методами.

Изменить: найденная душа

1 Ответ

0 голосов
/ 21 февраля 2019

Вместо:

 res.cookie('session', sessionCookie);
 res.send("done");

Мне нужно было использовать:

res.setHeader('Cache-Control', 'private');
res.cookie('__session', sessionCookie);
res.send("done");
...