這個問題是任何人誰是熟悉護照與智威湯遜與Google/Facebook戰略 - 我如何將智威湯遜與Google/Facebook戰略相結合?
- Node.js的
- 快遞
- 護照
- JWT認證與護照(JSON網絡令牌)
- Facebook的OAuth2.0的或谷歌的OAuth2 .0
我一直在做一些在線課程,並瞭解如何做以下兩件事:
- 認證使用Passport本地策略+ JWT令牌使用Passport谷歌/ Facebook的戰略+曲奇/會話
- 認證。
我試圖結合這兩個課程的內容基本上。我想使用Google策略+智威湯遜認證。我想使用JWT而不是cookies,因爲我的應用程序將成爲網絡/移動/平板電腦應用程序,而且我需要訪問來自不同域的api。
有我與這個有兩個問題: 揭開序幕谷歌/ Facebook的OAuth的管道,你需要調用「/ auth /中的Facebook」或「/ auth /中谷歌」。 Oauth流程基本上都是一樣的,所以當我從現在開始說'/ auth/google'時,我指的是兩者之一。現在我遇到的問題是:在客戶端上,我是否使用href按鈕鏈接或axios/ajax調用來調用「/ auth/google」路由?如果我使用href或axios/ajax方法,我仍然遇到兩種解決方案的問題。
在href方法問題: 當我分配一個<a>
標籤與A HREF到/ auth /中谷歌的認證工作完全正常。用戶通過Google Auth流程進行推送,他們登錄並調用'/ auth/google/callback'路由。我現在的問題是如何正確地將JWT令牌從'/ auth/google/callback'發送回客戶端?
經過大量的谷歌搜索後,我看到人們已經簡單地通過重定向查詢參數中的oauth回調將JWT傳遞迴客戶端。例如:
res.redirect(301, `/dashboard?token=${tokenForUser(req.user)}`);
我與此有關的問題是,現在的身份驗證能力保存在我的瀏覽器歷史記錄!我可以註銷(銷燬保存在localStorage中的令牌),然後只需查看我的瀏覽器URL歷史記錄,返回包含查詢參數中的令牌的url,然後我將自動再次登錄,而無需通過Google策略!這是一個巨大的安全缺陷,顯然是解決這個問題的不正確方法。
的愛可信/ Ajax方法問題: 現在擺在我這個問題說明問題,我肯定知道,如果我得到這個工作,它會解決我與以前的href問題讓所有的問題。如果我設法從axios.get()調用中調用'/ google/auth'並在響應正文中接收JWT,我將不會將該標記作爲url參數發送,並且不會保存在瀏覽器歷史記錄中!完美的權利?也仍有一些問題,這種方法:(
當試圖調用axios.get('/auth/google')
我得到以下錯誤:
我怎麼一直試圖解決的問題:
- 我將cors安裝到了我的npm服務器上,並在我的index.js文件中添加了
app.use(cors());
。 - 我拿了一個刺,並在「授權的J中添加了」http://localhost:3000「 Google開發者控制檯中的「avaScript起源」。
這些解決方案都沒有解決這個問題,所以現在我真的覺得停滯不前。我想使用axios/ajax的方法,但我不知道如何克服這個錯誤。
對不起,這麼長的留言,但我真的覺得我必須給你所有的信息,以便你能夠幫助我。
再次感謝,期待收到您的來信!