0

我使用JWTAuthenticator. 此身份验证器通过读取X-Auth-Token标头(a jwt)来识别每个请求中的用户。这适用于 REST 端点。

现在我有只有所有者才能访问的图像,我想在background-imagecss 属性中使用这些图像(这是一个要求)。在这种情况下,我无法设置请求标头,因此请求将被拒绝。

background-image下一个自然步骤是将令牌作为 url 参数嵌入到url 本身中。但是我不知道如何在服务器端进行。如果不存在标头,我如何告诉JWTAuthenticator在 url 中使用令牌X-Auth-Token

4

1 回答 1

0

好的,我在这里分享我的发现,希望这可以帮助其他人。在深入研究剪影代码时,我发现我们可以轻松地配置我们要从请求的哪个部分(标头、查询字符串……)读取令牌。默认情况下,jwt 令牌是从X-Auth-Token标头中读取的,但我们可以将其配置为从查询字符串变量JWTAuthenticator中读取令牌:

    val config =
      configuration.underlying
        .as[JWTAuthenticatorSettings]("silhouette.authenticator")
        // this is the important line of code
        .copy(requestParts = Some(Seq(RequestPart.Headers, RequestPart.QueryString)))

    new JWTAuthenticatorService(config, None, encoder, idGenerator, clock)

现在,如果您想在带有 a 的控制器后面使用受保护的资产,silhouette.SecureAction那么您只需将X-Auth-Tokenas 查询字符串参数添加到 url:

.my-class {
  background-image: url("/image?X-Auth-Token=........")
}
于 2020-04-28T09:26:14.703 回答