Как я могу декодировать токен JWT, который я получил REST API в Swift? - PullRequest
0 голосов
/ 23 января 2020

Итак, у меня есть две функции - одна, которая аутентифицирует пользователя, чтобы он мог войти в систему, и возвращает токен JWT, который должен быть проверен второй функцией, чтобы увидеть, вошел ли пользователь в систему или нет, и вернуть userID пользователя. пользователь путем декодирования токена.

Моя первая функция работает и предоставляет токен JWT, но я не знаю, как сделать вторую. Как я могу это сделать?

1004 * Вот мой JWT маркер:

"eyJhbGciOiJIUzI1NiJ9.eyJmaXJzdE5hbWUiOiJCb2JWb2VyIiwic3ViIjoiMCIsImV4cCI6MTU4MDY4NjAwNywiYXV0aG9yaXRpZXMiOlsiVVNFUiJdfQ.mrfHVMNIJUssHSNn6tJ-AVVlkX6u79kp4sAQjBCu9E0"

Мне нужно, чтобы получить идентификатор пользователя, который является Int. Функции veryfyToken возвращают либо userID, либо nil.

Какой-то код:

func verifyToken (to:String, completion: @escaping (Int?)->()) { 

 let url = URL(string: "http://localhost:8083/verifyToken")!
     let json: [String: String] = ["token":to]
     let jsonData = try? JSONSerialization.data(withJSONObject: json as Any)
    var request = URLRequest(url: url)
    request.httpMethod = "POST"


    request.httpBody = jsonData
    print("HTTPBODY:::",request.httpBody as Any)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")


}

1 Ответ

0 голосов
/ 23 января 2020

Вы должны использовать библиотеку для проверки и декодирования ваших токенов. jwt.io список доверенных библиотек сайтов для всех платформ, включая Swift.

На сегодняшний день перечисленные библиотеки:

Если вы go с JSONWebToken код для получения заявок будет выглядеть так:

do {
  let claims: ClaimSet = try JWT.decode("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.e30.2_8pWJfyPup0YwOXK7g9Dn0cF1E3pdn299t4hSeJy5w", algorithm: .hs256("secret".data(using: .utf8)!))
  print(claims)
} catch {
  print("Failed to decode JWT: \(error)")
}
...