Angularjs 浏览器中直接命中URL的Jwt令牌身份验证

Angularjs 浏览器中直接命中URL的Jwt令牌身份验证,angularjs,rest,authentication,spring-security,jwt,Angularjs,Rest,Authentication,Spring Security,Jwt,我有Angular+Spring应用程序,我试图用JWT令牌验证服务 在Jwt身份验证中,我将令牌存储在localStorage中,并在每个请求的授权HTTP头中附加令牌。这可以通过在AngularJs中编写拦截器来实现。我遵循了教程 现在我的问题是: 如何通过在浏览器中点击URL直接对请求进行身份验证 当您当时点击Url时,没有加载页面,也没有脚本将Url从localStorage绑定到身份验证标头。因此,最终服务器将拒绝请求并发送401,即使用户之前已通过身份验证。对于需要由浏览器直接加载的

我有Angular+Spring应用程序,我试图用JWT令牌验证服务

在Jwt身份验证中,我将令牌存储在localStorage中,并在每个请求的授权HTTP头中附加令牌。这可以通过在AngularJs中编写拦截器来实现。我遵循了教程

现在我的问题是:
如何通过在浏览器中点击URL直接对请求进行身份验证


当您当时点击Url时,没有加载页面,也没有脚本将Url从localStorage绑定到身份验证标头。因此,最终服务器将拒绝请求并发送401,即使用户之前已通过身份验证。

对于需要由浏览器直接加载的视频、图像或文档等web资源,请在url中添加一个带有JWT的参数(您无法设置标题)

在服务器端,若身份验证头的情况不存在,则解码寻找jwt的url

对于未生成的传入链接,例如从搜索引擎生成的链接

  1) accept the link and redirect user to login page with a cookie/field set to the destination page
  2) automatically, login user with JWT from local storage set in header in the usual way
  3) if it is succesful, redirect to the destination 

对于需要由浏览器直接加载的视频、图像或文档等web资源,请使用JWT向url添加一个参数(您不能设置标题)

在服务器端,若身份验证头的情况不存在,则解码寻找jwt的url

对于未生成的传入链接,例如从搜索引擎生成的链接

  1) accept the link and redirect user to login page with a cookie/field set to the destination page
  2) automatically, login user with JWT from local storage set in header in the usual way
  3) if it is succesful, redirect to the destination 

当直接指向URL时,只有Cookie将提供一种纯自动的方式来宣布您的客户端已通过身份验证。您的服务器能否提供一个自定义401/Unauthorized响应,并注入尝试的URL,从而将JWT从本地存储中拉出并发出请求?这不是最有效的方法。我想我不能在我在浏览器中点击的请求中添加头。即使我设法用401响应注入尝试的URL并取出jwt,但在那之后。。如何向新页面请求(不是ajax请求)添加标题?我认为这是不可能的。当直接指向URL时,只有cookies会提供一种纯粹自动的方式来宣布您的客户已通过身份验证。您的服务器能否提供一个自定义401/Unauthorized响应,并注入尝试的URL,从而将JWT从本地存储中拉出并发出请求?这不是最有效的方法。我想我不能在我在浏览器中点击的请求中添加头。即使我设法用401响应注入尝试的URL并取出jwt,但在那之后。。如何向新页面请求(不是ajax请求)添加标题?根据对话,我认为这是不可能的。根据您的方法,我认为我必须在服务器端写两个条件1)检查头中的jwt->是否存在且有效->用户已通过身份验证2)如果头中不存在->检查jwt的url参数->是否存在且有效->用户已通过身份验证。。我说得对吗?按照你的方法,我想我必须在服务器端写两个条件1)检查头中的jwt->是否存在且有效->用户已通过身份验证2)如果头中不存在->检查jwt的url参数->是否存在且有效->用户已通过身份验证。。我说得对吗?