iT邦幫忙

0

關於權限驗證的觀念

大家好,想請教一些問題

1.若要在前後端分離架構下,實作帳號登入驗證,要使用session驗證還是JWT驗證?

2.使用JWT驗證,首次登入後,API再吐回TOKEN給前端,這樣登入後的其他動作都要在HEAD加上TOKEN,是不是會比較麻煩?

3.session驗證的話,是首次帳號登入後,SERVER端在session紀錄成功登入,如果user要再訪問其他頁面,server端則透過session id抓到應的session來判斷是否成功登入來開啟權限,這樣的流程是否正確?

如果我觀念有錯誤的地方,再麻煩各位指導 謝謝

看更多先前的討論...收起先前的討論...
淺水員 iT邦新手 5 級 ‧ 2018-11-17 11:46:26 檢舉
我只知道如果單用 session 驗證
那麼會有 CSRF (跨站請求偽造) 的風險
w4560000 iT邦新手 5 級 ‧ 2018-11-17 19:59:41 檢舉
這個應該不是問題,我有爬到解決方法
kirai iT邦新手 5 級 ‧ 2018-11-18 09:07:49 檢舉
Api的設計原則是無狀態的,所以不應該把資料存放在session內(但只是原則而已,如果真的要放還是可以放),因此才會透過jwt把資料放在token內,一方面可以透過token認證,另一方面透過token可以取得使用者資料
w4560000 iT邦新手 5 級 ‧ 2018-11-19 11:12:26 檢舉
若採用JWT驗證的話,流程分別是

1.client端輸入帳號密碼
2.server端驗證帳號密碼,無誤後,建立JWT的TOKEN,並紀錄到DB
3.client端得到Token後,可以儲存在localstorage或是cookie中,進行其他動作時,在把token撈出來,放到head的Authorization。

這樣的流程是正確的嗎?
tedmax100 iT邦新手 5 級 ‧ 2018-11-21 01:20:39 檢舉
對的吧,但這樣頻繁驗證,DB的壓力要留意
w4560000 iT邦新手 5 級 ‧ 2018-11-21 08:59:26 檢舉
嗯嗯 感謝,現在改為記錄到Redis裡面。
tedmax100 iT邦新手 5 級 ‧ 2018-11-22 11:10:29 檢舉
Redis也是撐不住瞬間大流量的

尚未有邦友回答

立即登入回答