Java 在基于令牌的身份验证和单页应用程序中注销
我正在为我的Spring Boot应用程序使用JWT身份验证。前端将是一个单页应用程序 我应该在服务器端处理注销功能吗?据我所知,除非我们有一个有状态的服务器(在令牌的最长生存期内存储注销的令牌),否则无法使JWT令牌无效 SPA每次在其头中发出请求时都会传递JWT令牌,当用户访问Java 在基于令牌的身份验证和单页应用程序中注销,java,authentication,jwt,Java,Authentication,Jwt,我正在为我的Spring Boot应用程序使用JWT身份验证。前端将是一个单页应用程序 我应该在服务器端处理注销功能吗?据我所知,除非我们有一个有状态的服务器(在令牌的最长生存期内存储注销的令牌),否则无法使JWT令牌无效 SPA每次在其头中发出请求时都会传递JWT令牌,当用户访问/logout时,它可以将其从本地存储中删除,而无需调用服务器 潜在的问题是什么?这个想法在其他地方用过吗?最佳做法是什么?首先,您必须决定是否需要一台全状态服务器 全状态服务器 这很容易。只需向服务器发送一个注销请求
/logout
时,它可以将其从本地存储中删除,而无需调用服务器
潜在的问题是什么?这个想法在其他地方用过吗?最佳做法是什么?首先,您必须决定是否需要一台全状态服务器 全状态服务器 这很容易。只需向服务器发送一个注销请求并丢弃会话即可。就这样。这是最安全的方法 无状态服务器 我喜欢无状态服务器,因为您不必管理状态。但你当然有一个权衡。在这种情况下,安全性。没有退出的方法,因为您没有可以在服务器端使其失效的会话 因此,使用JWT令牌的攻击者可以使用会话,直到会话结束,而无需采取任何措施来阻止 但是您可以做一些事情来避免atacker获得JWT令牌。这里有一些你可以做的事情,你已经做对了