繁体   English   中英

如何在Spring MVC的客户端处理JWT令牌?

[英]How to handle JWT token on client side of Spring MVC?

有Spring MVC应用程序-服务器生成HTML,客户端不是SPA(即,这与任何形式的API无关)。
在认证期间,将生成JWT令牌并将其返回给客户端。 在授权期间,服务器验证JWT令牌。

如何在客户端存储JWT令牌并将其通过所有其他请求传递给服务器? 请记住,这是Spring MVC应用程序,而不是SPA。

我尝试用Google搜索任何示例,但唯一的发现与REST身份验证有关,而根本与这种情况无关。

在最坏的情况下,我们可以从JavaScript执行身份验证,并将JWT令牌存储在缓存/ Cookie中。 但是也许Spring MVC可以立即支持此功能,我们只需要在配置中设置一些复选框即可:-)

对于非SPA,通常的方法是将身份验证令牌存储在服务器会话中。 客户端发出请求时,将通过JSESSIONID cookie检索适当的会话(如果禁用cookie,则将JSESSIONID添加到URL)。

我不确定为什么不能使用上述方法,但是如果要将JWT存储在客户端上,则常见的方法是:

  • 令牌在生成时存储在浏览器的本地或会话存储中,例如window.sessionStorage.authToken = 'token_value' ;
  • 通过将Authorization HTTP标头设置为令牌的值,将令牌添加到每个后续请求
  • 当用户注销时,从浏览器存储中删除令牌

我可以从服务器端使用带有JWT令牌的“ Set-Cookie”标头。 客户端会将此标头解释为自动设置cookie。 在这种情况下,将令牌传递给每个请求将无需客户端执行其他步骤。
一些细节在这里描述https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage

在提供更好的选择之前,我将使用它作为公认的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM