我在Dart上创建JWT令牌时遇到问题。我已经尝试了dart_jwt包,但它没有按照示例("编码"部分HERE)工作。
如果有人能帮助我在Dart上创建JWT令牌,即使使用不同的包,我会很高兴。
答案 0 :(得分:0)
你需要使用其中一个子类而不是像readme.md see中那样的抽象类
final DateTime issuedAt = new DateTime.now();
final DateTime expiresAt = issuedAt.add(const Duration(minutes: 5));
String iss = 'xxxxxxx';
final claimSet = new OpenIdJwtClaimSet.build(issuer: iss, subject: 'xxxx', expiry: expiresAt, issuedAt: issuedAt);
final signatureContext = new JwaSymmetricKeySignatureContext(app.api.secret);
final jwt = new JsonWebToken.jws(claimSet, signatureContext);
return jwt.encode();
答案 1 :(得分:0)
JWT令牌只是以Base64Url格式编码的JSON标头,有效负载和签名。 (请参阅example。)您可以自己完成所有操作,但是有些软件包可以为您完成此操作。 jaguar_jwt软件包正在积极维护,并且对我来说效果很好。
// import 'package:jaguar_jwt/jaguar_jwt.dart';
final claimSet = JwtClaim(
issuer: 'Me',
subject: '${userId}',
issuedAt: DateTime.now(),
maxAge: const Duration(hours: 12)
);
const String secret = 'myreallysecretpassword';
String token = issueJwtHS256(claimSet, secret);