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

时间:2019-05-15 13:31:44

标签: javascript java spring-mvc authentication jwt

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

描述了一些细节

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