сеансы не сохраняются в куки браузера - PullRequest
0 голосов
/ 14 января 2020

Когда я пытаюсь запустить свой API в почтальоне, он работает нормально, и сессии поддерживаются. Но когда я пытаюсь запустить его из пользовательского интерфейса, сеанс входа в систему не работает.

Это мой API входа, откуда я вхожу в

app.post('/user/login', (req, res, next) => {
        const body = req.body;
        let email = body.email;
        let password = body.password;
        const userDetails = db.collection(userProfiles);
        userDetails.findOne({email: email}, function (err, user) {
            if (err) {
                return next(err);
            } else if (!user) {
                return res.status(400).send({
                    status: 'error',
                    message: 'user does not exist'
                });

            } else {
                if (user.password == password) {
                    user_object = user;
                    req.session.user = user;
                    return res.send({
                        user_obj: user,
                        status: 'success',
                        message: 'Successfully logged in'
                    });

                } else {
                    return res.status(400).send({
                        status: 'error',
                        message: 'Wrong Password'
                    })

                }
            }

            return res.send(user);
        });
    });

Это мой сеанс API из куда я отправляю пользователя req.session.user при вызове этого API

app.get('/user/dashboard', function (req, res) {
        if (!req.session.user) {
            return res.status(400).send({
                data:'need to be logged in'
            });
        }
        return res.status(200).send({
            data:req.session.user
        });
    });```



The below is the javascript file from where i am trying to call the user stores in req.session.user

`
async function fetchUserId(){
    let cookie = document.cookie;
    let res = await fetch('http://127.0.0.1:8080/user/dashboard',
        {redirect: 'follow',
            headers:{
                "Cookie":cookie
            }});
    let userJson = await res.json();
    console.log(res);
    console.log(userJson);
    //return userJson;
};
`


when i hit the login API from Postman it is maintaining session and working fine but when i do the same from UI from browser it is giving error status 400 every time. 

1 Ответ

0 голосов
/ 14 января 2020

Можно сделать

fetch(url, options).then(function(res) { console.log(res} )

и

app.get('/user/dashboard', function (req, res) {
        console.log(req.headers)
        if (!req.session.user) {
            return res.status(400).send({
                data:'need to be logged in'
            });
        }
        return res.status(200).send({
            data:req.session.user
        });
    });

Для проверки действительно ли повар ie там и где находится пользовательский объект.

И Вы можете проверить консоль разработчика браузера, чтобы увидеть, обновляется ли cook ie.

Я вижу, что при запросе на выборку вы помещаете cook ie в свой заголовок. Но чем в API вы ищете пользователя в req.session.user. Хотя повар ie находится в req.header ["Cook ie"].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...