簡體   English   中英

使用CouchDB的PouchDB和Cookie身份驗證實際上並未登錄用戶

[英]PouchDB and Cookie Authentication with CouchDB not actually logging in the user

我有一個節點應用程序,該數據庫將CouchDB用於數據庫,並將PouchDB用於客戶端。 要登錄,將請求發送到節點服務器,該節點服務器在將cookie發送回客戶端之前,先使用CouchDB實例對用戶的憑據進行身份驗證。 問題是,重新啟動瀏覽器並登錄后,當Pouch嘗試連接到數據庫時,CouchDB發送401未經授權的響應,並且瀏覽器顯示其默認登錄彈出窗口。 即使AuthSession cookie在瀏覽器中,也會發生這種情況。

Chrome中的完整錯誤是: Failed to load resource: the server responded with a status of 401 (Unauthorized) http://localhost:5984/user/?_nonce=rItPZR1fgbHrwn0a

在Chrome彈出框中輸入用戶憑據並刷新頁面后,它會正常加載。 轉到列出的頁面並輸入用戶憑據將提供有關用戶的各種元數據。

我認為發生這種情況是因為PouchDB實際上並不使用節點服務器發送的AuthSession令牌,而是CouchDB在向用戶提示401之后為其提供的cookie。有什么辦法可以解決此問題?

提前致謝。

您可能需要攔截和修改PouchDB的fetch調用以添加credentials選項,當您首次構造數據庫對象時,可以輕松做到這一點:

db = new PouchDB('https://yourcouch/yourdb', {
    fetch: (url, opts) => fetch(url, { ...opts, credentials: 'include' /* OR 'same-origin' */ })
});

請注意,您將需要在適當的地方將其設置為same-origin ,或者include跨源/無源請求。

實際上,只要在客戶端上設置了cookie,PouchDB就會自動獲取身份驗證。 我有一個插件可以證明這一點: https : //github.com/nolanlawson/pouchdb-authentication 您可以使用此插件直接與您的CouchDB對話,它肯定會工作。 也許您的Node代理沒有在PouchDB和CouchDB之間傳遞cookie?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM