我正在開發一個相當複雜的帶有Angular2前端的Web應用程序。我想維護所有客戶端與服務器之間的通信,使用基於Node.js的RESTful API來傳遞JSON對象。使用REST API管理複雜應用程序的狀態
但是,我對REST應該是無狀態的要求有些困惑。在服務器端存儲或生成相當多的數據,並將其存儲在客戶端並將其附加到每個請求都會產生相當大的開銷。
例如:有數百個與特定用戶相關的權限(即哪個資源可以在什麼級別訪問)。通過未加密的客戶端執行這些權限是一個明顯的安全問題;用每個請求重新提交所有的數據(加密)感覺很奇怪。在每次請求時從數據庫刷新它們都會導致性能下降。
我的意思是,當然至少有一些類型的訪問令牌,在身份驗證時生成,必須通過每個請求傳遞給服務器。我只是假設我會生成一個不可猜測的會話ID(僅在成功驗證時),並將它以http-only(限制JavaScript訪問),安全(強制使用https)Cookie和使用此cookie傳遞給客戶端在服務器端保持一些節約的會話狀態(如權限)。但是,這種做法似乎在REST世界中被忽略了?是一個有狀態的RESTful API是一個矛盾的,一個異端?