У меня проблемы с работой 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?
Буду признателен за любую помощь или руководство. Заранее спасибо.