[英]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.