成功验证后如何在每个页面上附加jwt令牌?

时间:2016-08-30 13:45:01

标签: spring spring-security jwt

我遵循了this代码并成功实现了jwt身份验证。我在我的Web应用程序中使用此身份验证。我可以在登录页面上获取令牌。之后如何将该令牌附加到所有后续请求的标头。我将令牌存储在本地存储中,但是当我在js加载之前成功登录后导航到下一页时,页面加载了401错误。

我该如何实现这个目标?

2 个答案:

答案 0 :(得分:0)

问题是您正在尝试使用基于令牌的安全性与Web MVC架构。我快速搜索了有关如何以这种方式执行的任何教程,而我能够找到的是使用基于令牌的安全性的REST API的示例。

原因是使用Spring MVC,您单击的每个链接都会将您重定向到控制器端点,该端点将呈现HTML并将其发送回浏览器。除非您以某种方式使您网站上的每个链接都在标题中包含令牌或者使用cookie来存储令牌,否则您将收到401错误,因为请求中不存在令牌。

如果您将Angular JS(或您喜欢的前端框架)与REST后端一起使用,您将能够使用JS在标头中放置您需要的任何内容,以确保用户经过身份验证并具有访问权限对资源。有很多示例项目可以演示如何执行此操作。

免责声明我无法找到一个可靠的来源,明确表示基于令牌的安全性仅适用于REST。我基于这些经验以及我在教程和文章方面看到的内容。

答案 1 :(得分:0)

Ich完全同意blur0224的答案,你必须在你网页上每个链接的请求标题中设置令牌。我不知道如何实现这一目标。此外,我认为基于JWT令牌的身份验证不适合基于MVC的应用程序。我会在像Angularjs这样的框架构建SPA中使用它。

为什么不使用'标准'Spring身份验证?