我正在开发一个相当复杂的带有Angular2前端的Web应用程序。我想维护所有客户端与服务器之间的通信,使用基于Node.js的RESTful API来传递JSON对象。使用REST API管理复杂应用程序的状态
但是,我对REST应该是无状态的要求有些困惑。在服务器端存储或生成相当多的数据,并将其存储在客户端并将其附加到每个请求都会产生相当大的开销。
例如:有数百个与特定用户相关的权限(即哪个资源可以在什么级别访问)。通过未加密的客户端执行这些权限是一个明显的安全问题;用每个请求重新提交所有的数据(加密)感觉很奇怪。在每次请求时从数据库刷新它们都会导致性能下降。
我的意思是,当然至少有一些类型的访问令牌,在身份验证时生成,必须通过每个请求传递给服务器。我只是假设我会生成一个不可猜测的会话ID(仅在成功验证时),并将它以http-only(限制JavaScript访问),安全(强制使用https)Cookie和使用此cookie传递给客户端在服务器端保持一些节约的会话状态(如权限)。但是,这种做法似乎在REST世界中被忽略了?是一个有状态的RESTful API是一个矛盾的,一个异端?