【问题标题】:Dart Language: How to create a JWT tokenDart 语言:如何创建 JWT 令牌
【发布时间】:2015-10-04 23:40:23
【问题描述】:

我在 Dart 上创建 JWT 令牌时遇到问题。我已经尝试过 dart_jwt 包,但是按照示例(“编码”部分 HERE)它不起作用。

如果有人可以帮助我在 Dart 上创建 JWT 令牌,我会很高兴,即使使用不同的包。

【问题讨论】:

  • “没用”是什么意思?错误信息,错误结果,...
  • @GünterZöchbauer:这是一条错误消息。 JwtClaimSet 是一个抽象类,您无法实例化它(这是我发布的链接)。但是,不需要 dart_jwt。这就是为什么我也要求其他包裹的原因,因为也许其他人做到了。
  • 我也没有找到类似的问题。 dart_jwt 是最新的包,它来自@andersmholmgren。如果示例不起作用,我将在 GitHub 存储库中创建一个问题。
  • 对不起,我否决了这个问题,但您最好使用其他 JWT 包 pub.dartlang.org/packages?q=jwt,因为您指向的包不再维护,据说与 Dart 2 不兼容。

标签: dart token jwt


【解决方案1】:

您需要使用子类之一,而不是像 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();

【讨论】:

    【解决方案2】:

    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);
    

    另见

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-20
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 2017-06-13
      相关资源
      最近更新 更多