簡體   English   中英

在play2剪影JWT中達到JWT令牌

[英]Reaching JWT Token in play2 silhouette JWTAuthenticator

Play-silhouette-rest激活器模板提供了一個很好的示例,說明如何使用REST身份驗證/通過HeaderAuthenticator進行注冊。 獲取登錄請求后,它將創建用戶並在響應正文和標頭中返回令牌

 val response = Ok(Json.toJson(Token(token = authenticator.id, expiresOn = authenticator.expirationDate)))
 env.authenticatorService.init(authenticator, Future.successful(response))

在此示例中,我在正文(在第一行中初始化)和標頭(在第二行中初始化)中得到了相同的標記。

願意使用JWTAuthenticator,我更改了代碼以改為使用它(代碼是相同的,唯一的區別是依賴注入代碼),所以我希望外觀相同。

但是使用JWTAuthenticator authenticator.id可以給我另一個生成的ID(基於稍后生成的真實JSON Web令牌),並且JSON Web Token僅寫在第二行代碼的標頭中。

我願意在響應正文中返回真實的json網絡令牌,但在用相同的方法編寫標頭后,不想讀取標頭。

有什么解決辦法嗎?

我看到的唯一解決方案是使用請求而不是響應來初始化身份驗證器。 這是可能的,因為身份驗證器服務包含兩個init方法。 第一個可以使用響應初始化身份驗證器,第二個可以使用請求初始化身份驗證器。

env.authenticatorService.init(authenticator, request).map { r =>
  r.headers.get("X-Auth-Token") match {
    case Some(token) => Ok(Json.toJson(Token(token = token, expiresOn = authenticator.expirationDate)))
    case None => BadRequest("Couldn't generate token")
  }
}

我將看看是否可以添加其他init方法來初始化身份驗證器並返回生成的值。 您可以關注此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM