Я работаю над веб-приложением, использующим 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 и, возможно, не знаком с некоторыми терминами / методами.
Изменить: найденная душа