Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 基于JWT的身份验证<;img>;标签?_Html_Image_Authentication_Single Page Application_Jwt - Fatal编程技术网

Html 基于JWT的身份验证<;img>;标签?

Html 基于JWT的身份验证<;img>;标签?,html,image,authentication,single-page-application,jwt,Html,Image,Authentication,Single Page Application,Jwt,假设我有一个单页应用程序,它使用JWT令牌对后端RESTAPI进行身份验证。在执行REST请求时,我在http头中传输JWT令牌。到目前为止,一切顺利 现在,假设我想从服务器上下载一个映像,并且我只想让经过身份验证的用户可以访问该映像。在服务器上,这没有问题:只需定义一个传递映像的路由,并在该路由中验证JWT令牌 但是:如何将令牌从客户端传输到服务器?如果使用常规的标记,则无法将令牌附加为http头。我该怎么办 我基本上可以考虑将令牌(例如base64 encoded)添加到查询字符串中,但这似

假设我有一个单页应用程序,它使用JWT令牌对后端RESTAPI进行身份验证。在执行REST请求时,我在http头中传输JWT令牌。到目前为止,一切顺利

现在,假设我想从服务器上下载一个映像,并且我只想让经过身份验证的用户可以访问该映像。在服务器上,这没有问题:只需定义一个传递映像的路由,并在该路由中验证JWT令牌

但是:如何将令牌从客户端传输到服务器?如果使用常规的
标记,则无法将令牌附加为http头。我该怎么办

我基本上可以考虑将令牌(例如base64 encoded)添加到查询字符串中,但这似乎不是很安全,因为令牌会出现在浏览器的历史记录中。另一方面,如果不完全使用JavaScript加载图像,我想不出其他方法


有什么提示吗?

如果我想到Amazon S3,这里需要的是一个签名url。正如您已经建议的,向查询字符串添加一个标记就可以了

关于安全性:我认为这是一个令牌过期日期的问题。由于令牌不会失效,因此最好使用签名URL:

  • 找个JWT
  • 获取带有该令牌的签名URL
  • 使用该URL检索img

  • 通过这种方式,您可以独立于JWT控制已签名URL的过期时间,还可以定义用于已签名URL的令牌的长度。

    谢谢。但是,如果URL被用户复制并通过电子邮件发送给另一个用户,那么图像不会被显示吗?是的,但这就像披露他的凭据一样,他也可以泄露这些凭据,这同样适用于已签名的链接,链接也会在某个时候过期。你是怎么做到的?你是说过期吗?链接仅在预定义的时间内有效,您通常会将该时间设置为5h,在S3中为链接签名提供该功能,请参阅