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 = _deprebase64(parts[1]); final payloadMap = json.depre(payload); if (payloadMap is! Map<String, dynamic>) { throw Exception('invalid payload'); } return payloadMap;}String _deprebase64(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.depre(base64Url.depre(output));}


