0
從有效載荷中獲取自定義字段好的,當我生成JWT時,我將有幾個自定義聲明添加到有效內容中,並且我可以在我的前端將它們拉出(JavaScript )。然後我有我的JavaScript發送ajax調用一個微服務,並通過JWT一起。我想從微服務中的JWT中獲得我的定製理賠。我正在做以下事情:如何使用JJWT
Claims claims = Jwts.parser().setSigningKey(Vars.SECRET_KEY).parseClaimsJws(token).getBody();
User user = claims.get("customuser", User.class);
它會引發異常。
io.jsonwebtoken.RequiredTypeException: Expected value to be of type: class net.netdatacorp.netdauth.model.User, but was class java.util.LinkedHashMap
at io.jsonwebtoken.impl.DefaultClaims.get(DefaultClaims.java:128)
以下是我的自定義聲明的數據在前端的JWT檢查器中的顯示方式。
{
jti: "83bffbad-7d36-4370-9332-21a84f2a3dce",
iat: 1498241526,
sub: "test",
iss: "www.test.net",
customuser: {
userId: 1,
userCd: "TMM",
firstNm: "Testy",
lastNm: "McTesty",
userNm: "test",
emailAddress: "[email protected]",
active: true,
createdDt: 1491355712000,
createdByUserId: 0,
lastUpdateDt: 1498199278000,
lastUpdateByUserId: 0,
lastLoginDt: 1484928016000
}
}
我錯過了什麼可以拉我的自定義聲明?
我拿了永樂,看到JwtParser'的'提供的唯一實現是'DefaultJwtParser',依靠傑克遜的'ObjectMapper',但可悲的是不暴露它允許定製。甚至沒有通過繼承:方法'readValue'是'protected',但只有對象返回'Map'([參見0.7.0](https://github.com/jwtk/jjwt/blob/0.7.0/) src/main/java/io/jsonwebtoken/impl/DefaultJwtParser.java#L550-L556))。看起來你需要從頭開始自己實現'JwtParser' ...或手動將映射轉換爲對象: -/ –
在這種情況下,它看起來像我將切換庫,它看起來像jose4j可以處理我我想要做。 –
@JacobMiles,你介意發佈'jose4j'代碼進行比較嗎? – chenrui