在我的公司,我们正在构建一个Web应用程序,而大多数实际问题是选择一个身份验证解决方案。我想到了最常用的三种维护方式 与经过身份验证的用户的会话:无状态JWT(所有会话数据在其有效负载中保存JWT令牌),有状态JWT(令牌仅用于验证请求,在其有效负载中,它具有到服务器上的会话数据记录的会话ID)和存储在其中的传统会话ID cookie,需要额外检查服务器中的匹配ID。
因为我想构建这个应用程序RESTful,只有第一种方式似乎对我来说。这样服务器就不需要保持任何状态。
我的第一个问题是:将所有会话数据存储在令牌有效负载中是否可以(当然,这些数据并不大,它们不应该是秘密,因此不需要安全性。)
此外,我也将实施注销逻辑,我知道,黑名单代币,在我看来,我认为,最佳解决方案也会破坏无状态。 您是否知道实现注销逻辑的任何其他方法,IMMEDIATELY使JWT令牌无效?
感谢您的回答。
编辑: 在失效的情况下,我正在考虑发送一个更新的令牌,其中包含一个告诉" im invalidated token"或者过期的过期日期。这个解决方案只适用于"好男孩"用户。黑客将保留以前仍然有效的令牌。
答案 0 :(得分:0)
使用JWT注销通过删除令牌客户端来工作。像这样。
function removeToken() {
localStorage.removeItem("jwt-token");
}
没有令牌,用户就会被注销。所以我认为这是立即的?