有 Spring MVC 应用程序——服务器生成 HTML,客户端不是 SPA(即这与任何形式的 API 无关)。在身份验证期间,生成 JWT 令牌并将其返回给客户端。在授权期间,服务器验证 JWT 令牌。如何在客户端存储 JWT 令牌并通过所有进一步的请求将其传递给服务器?请记住这是 Spring MVC 应用程序而不是 SPA。我尝试在谷歌上搜索任何示例,但唯一的发现与 REST 身份验证有关,与本案例完全无关。在最坏的情况下,我们可以从 JavaScript 执行身份验证并将 JWT 令牌存储在缓存/cookie 中。但是也许 Spring MVC 开箱即用地支持这个,我们只需要在配置中设置一些复选框:-)
2 回答
ITMISS
TA贡献1871条经验 获得超8个赞
对于非 SPA,通常的方法是将身份验证令牌存储在服务器会话中。当客户端发出请求时,通过 JSESSIONID cookie 检索适当的会话(如果禁用 cookie,则将 JSESSIONID 添加到 URL)。
我不确定为什么你不能使用上面的方法,但是如果你想将 JWT 存储在客户端上,一种常见的方法是:
生成令牌时将令牌存储在浏览器的本地或会话存储中,例如
window.sessionStorage.authToken = 'token_value'
;通过将
Authorization
HTTP 标头设置为令牌的值,将令牌添加到每个后续请求当用户注销时,从浏览器存储中删除令牌
郎朗坤
TA贡献1921条经验 获得超9个赞
我可以在服务器端使用带有 JWT 令牌的“Set-Cookie”标头。客户端会将此标头解释为自动设置 cookie。在这种情况下,将令牌传递给每个请求将无需客户端的额外步骤即可完成。
此处描述了一些详细信息https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage
在提供更好的选择之前,我将使用它作为可接受的答案。
添加回答
举报
0/150
提交
取消