[英]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.