Я получаю токен JWT в ответ. Что я сделал, так это то, что я декодировал только раздел полезной нагрузки из jwtToken, теперь я хочу извлечь «exp» из полезной нагрузки, чтобы проверить дату истечения срока действия, как я могу получить «exp». из полезной нагрузки, пожалуйста, помогите мне.
struct JWTTokenDecoder {
func decode(jwtToken token: String) throws -> [String: Any] {
enum DecodeErrors: Error {
case badToken
case unkown
}
func base64Decode(_ base64: String) throws -> Data {
let padded = base64.padding(toLength: ((base64.count + 3) / 4) * 4, withPad: "=", startingAt: 0)
guard let decoded = Data(base64Encoded: padded) else {
throw DecodeErrors.badToken
}
return decoded
}
func decodeJWTPart(_ value: String) throws -> [String: Any] {
let body = try base64Decode(value)
let json = try JSONSerialization.jsonObject(with: body, options: [])
guard let payload = json as? [String: Any] else {
throw DecodeErrors.unkown
}
return payload
}
let segments = token.components(separatedBy: ".")
return try decodeJWTPart(segments[1])
}
}