我正在编写一个Flutter / Dart应用程序,并从一个具有我需要使用的声明的auth服务器返回JWT . 我已经查看了各种(4个到目前为止)的Dart JWT库 - 但是它们都太旧了,不再使用Dart 2等,或者它们需要秘密来解码JWT,这是没有意义的,也是不正确的(或者可能,因为我没有访问权限) .
那么 - 如何在“现代”的Dart / Flutter应用程序中获得JWT并从中获取声明?
JWT令牌只是base64编码的JSON字符串(其中3个用点分隔):
import 'dart:convert'; Map<String, dynamic> parseJwt(String token) { final parts = token.split('.'); if (parts.length != 3) { throw Exception('invalid token'); } final payload = _decodeBase64(parts[1]); final payloadMap = json.decode(payload); if (payloadMap is! Map<String, dynamic>) { throw Exception('invalid payload'); } return payloadMap; } String _decodeBase64(String str) { String output = str.replaceAll('-', '+').replaceAll('_', '/'); switch (output.length % 4) { case 0: break; case 2: output += '=='; break; case 3: output += '='; break; default: throw Exception('Illegal base64url string!"'); } return utf8.decode(base64Url.decode(output)); }
1 回答
JWT令牌只是base64编码的JSON字符串(其中3个用点分隔):