Невозможно получить аутентификацию cook ie при работе с pouchdb - PullRequest
0 голосов
/ 18 февраля 2020

У меня проблемы с работой pouchdb на стороне клиента. Я просмотрел несколько других постов переполнения стека, но до сих пор не смог понять это. Я также изучил pouchdb-аутентификацию, но, похоже, она мне не нужна.

Ниже мой Express бэкэнд.

Сначала я получаю пароль от пользователя и проверяю его, прежде чем отправлять запрос в / _sessions для получения токена. Затем я возвращаю строку обратно клиенту. Строка выглядит следующим образом:

AuthSession = dGVzdDo1RTRDMDlFNDoCqn-ogpyksRGBXe7x7DVinw075A; Version = 1; Истекает = вторник, 18 февраля 2020 года, 16:09:32 по Гринвичу; Max-Age = 600; Path = /; HttpOnly

В маршруте POST для localhost: 8080 / сеанс

bcrypt.compare(req.body.password, users[0].password, function (error, result) {
 if (error) { res.status(400).json({ error }); }
  if (result === true) {
    // return a cookie auth token from couchdb
    axios.post('http://localhost:5984/_session', {
      name: req.body.username,
      password: users[0].password
    }).then((response) => {
      const cToken = response.headers['set-cookie'][0];
      return res.json(cToken); // send auth token back to client
    }).catch((err) => {
      return res.status(400).json(err);
    });
  });
};

Однако клиентская сторона, похоже, не распознает, что я получил токен cook ie и Я получаю эту ошибку:

{ошибка: «неавторизован», причина: «У вас нет прав доступа к этой базе данных», имя: «неавторизован», статус: 401, сообщение: «Вы находитесь не авторизован для доступа к этой базе данных. " }

Вот мой код на стороне клиента:

axios.post('http://localhost:8080/session/', { username: this.form.username, password: this.form.password }).then((res) => {
  console.log(res.data);
  const db = new PouchDB('http://localhost:5984/somedb', { headers: { Cookie: res.data } });
  db.info().then((info) => {
    db.put({
      _id: 'mydoc',
      title: 'test'
    }).then((response) => {
      // handle response
    }).catch((err) => {
      console.log(err);
    });
  });
}).catch((error) => {
  console.log(error);
});

Это из-за того, что я не получаю заголовок / повар ie не установлен? Могу ли я не просто передать строку при создании экземпляра pouchdb?

Буду признателен за любую помощь или руководство. Заранее спасибо.

...