我已經在本地部署了一個 React (CRA) Node JS 應用程式(使用 create-react-app 構建腳本),我已經使用 passportjs 和 cookieSession 實作了 Google OAuth 登錄以實作持久性。
登錄作業正常,但是當我注銷然后嘗試使用 google OAuth再次登錄時出現一個奇怪的錯誤,它只是將我重定向到一個空白頁面。
這就是我向我的 google oauth 端點發出請求的方式:
window.open('https://localhost:3000/auth/google', "_self")
然后該端點由我的 API 獲取:
app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));
進行一些故障排除,起初罪魁禍首似乎是 cookie,因為當我在嘗試再次登錄之前洗掉站點資料時......然后登錄作業正常。
但是,如果我只洗掉 cookie(通過存盤面板 -> cookie -> 全部洗掉,在 Firefox 中),該錯誤仍然存??在,只有當我完全洗掉站點資料時它才會消失。
此外,我第二次嘗試登錄請求時不會到達我的服務器。
我已經嘗試過的:
- 將我的登錄按鈕包裝在錨標記中,并將錨的標記 href 設定為端點 url。
- 創建一個錨標記并使用端點 url 分配一個 href,然后以編程方式單擊該新元素。
這些都不起作用,問題仍然存在。 - 新鮮的 Firefox 組態檔:這甚至很奇怪,當我第一次嘗試在新創建的組態檔中使用 google 登錄時,就會出現該錯誤。同樣,我必須先單擊
clear cookies and site data按鈕才能使其作業。 - 隱身模式:問題仍然存在,我第一次登錄時它仍然有效,但第二次將我重定向到空白頁面,并且請求甚至沒有到達我的服務器。
這里可能是什么問題?
uj5u.com熱心網友回復:
問題是 creat-react-app 模板附帶的服務作業者,但是我不想完全禁用它,因為我希望我的應用程式成為 PWA,所以下一個最好的事情是禁用服務作業者快取專門針對用戶啟動 Google 登錄的頁面(google 按鈕所在的頁面)。
為此,我必須安裝sw-precache允許您修改 create-react-app 模板附帶的默認 service-worker 的軟體包(因為您不能直接修改它)。
然后你必須在專案的根目錄創建一個組態檔并添加這些行,在這種情況下我稱之為sw-precache-config.js:
module.exports = {
runtimeCaching: [
{
urlPattern: /<the route to ignore>/,
handler: 'networkOnly'
}
]
};
然后在你的包 json 的構建腳本中:
"build": "react-scripts build && sw-precache --config=sw-precache-config.js"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511520.html
