【发布时间】:2016-10-24 09:44:18
【问题描述】:
我有 Angular + Spring 应用程序,我尝试使用 JWT 令牌对服务进行身份验证。
在 Jwt 身份验证中,我将令牌存储在 localStorage 中,并将令牌附加到每个请求的 Authorization HTTP 标头中。这可以通过在 AngularJs 中编写拦截器来完成。我已经关注this 教程。
现在我的问题是:
如何验证通过在浏览器中点击 URL 直接发出的请求?
当您点击 URL 时,没有加载页面,也没有脚本将 URL 从 localStorage 绑定到 Authentication 标头。所以最终服务器会拒绝请求并发送 401,即使用户之前已经过身份验证。
【问题讨论】:
-
直接访问 URL 时,只有 cookie 会提供一种纯自动化的方式来宣布您的客户端已通过身份验证。您的服务器能否提供自定义的 401/未授权响应,注入尝试的 URL,将 JWT 从 localStorage 中拉出并发出请求?这不是最有效的方法。
-
我认为我无法在浏览器中点击的请求中添加标头。
-
即使我设法用 401 响应注入尝试的 URL 并提取 jwt 但之后..如何将标头添加到新页面请求(不是 ajax 请求)?根据this 对话,我认为这是不可能的。
标签: angularjs rest authentication spring-security jwt