Flutter JWT令牌生成插件jwt_token_generator的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter JWT令牌生成插件jwt_token_generator的使用

特性

生成HS256算法JWT令牌。

开始使用

pubspec.yaml文件中添加依赖项并开始使用其方法。

使用方法

  1. 实例化JWT类。
  2. 声明负载。
  3. 使用generateToken方法。
JWT jwt = JWT();
Map<String, dynamic> payload = {
    'iss': 'localhost',
    'exp': DateTime.now().add(Duration(hours: 1)).millisecondsSinceEpoch / 1000,
    'id': 1,
    'fullname': 'User name'
};
String token = await jwt.generateToken(payload: payload, secretKey: 'SampleKey');

验证JWT

  1. 实例化JWT类。
  2. 使用验证JWT方法。
JWT jwt = JWT();
bool isValidated = await jwt.verifyTokey(token: token, secretKey: secretKey);
print(isValidated); // True 或 False

额外信息

目前支持的算法:HS256
很快会添加更多算法,或者如果你想要贡献也可以参与进来。


完整示例Demo

import 'package:jwt_token_generator/src/jwt.dart';

void main() async {
  // 实例化JWT类
  JWT jwt = JWT();

  // 声明负载
  Map<String, dynamic> payload = {
    'iss': 'localhost',
    'exp': DateTime.now().add(Duration(hours: 1)).millisecondsSinceEpoch / 1000,
    'id': 1,
    'fullname': 'User name'
  };

  // 生成JWT令牌
  String token = await jwt.generateToken(payload: payload, secretKey: 'SampleKey');

  // 打印生成的令牌
  print('Token : $token');
}

更多关于Flutter JWT令牌生成插件jwt_token_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter JWT令牌生成插件jwt_token_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用jwt_token_generator插件来生成JWT令牌的代码示例。

首先,确保你已经在pubspec.yaml文件中添加了jwt_token_generator依赖:

dependencies:
  flutter:
    sdk: flutter
  jwt_token_generator: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

以下是一个简单的示例,展示如何生成JWT令牌:

import 'package:flutter/material.dart';
import 'package:jwt_token_generator/jwt_token_generator.dart';
import 'dart:convert';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('JWT Token Generator Example'),
        ),
        body: Center(
          child: GenerateJWTButton(),
        ),
      ),
    );
  }
}

class GenerateJWTButton extends StatefulWidget {
  @override
  _GenerateJWTButtonState createState() => _GenerateJWTButtonState();
}

class _GenerateJWTButtonState extends State<GenerateJWTButton> {
  String? jwtToken;

  void _generateJWT() {
    // 创建一个JWT的Header部分
    final header = {
      'typ': 'JWT',
      'alg': 'HS256',
    };

    // 创建一个JWT的Payload部分
    final payload = {
      'iss': 'http://example.com',
      'aud': 'http://example.com/resources',
      'iat': DateTime.now().millisecondsSinceEpoch ~/ 1000, // 签发时间
      'exp': (DateTime.now().add(Duration(hours: 1))).millisecondsSinceEpoch ~/ 1000, // 过期时间
      'data': {
        'userId': '1234567890',
        'username': 'johndoe',
      },
    };

    // 密钥,用于签名JWT
    final secretKey = 'your-secret-key';

    // 使用jwt_token_generator生成JWT
    final jwt = JwtTokenGenerator(secretKey);
    jwtToken = jwt.generateToken(header, payload);

    // 更新UI
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: _generateJWT,
      child: Text('Generate JWT Token'),
    );
  }

  @override
  void initState() {
    super.initState();
    jwtToken = null;
  }

  @override
  Widget buildResult(BuildContext context) {
    if (jwtToken != null) {
      return Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Generated JWT Token:'),
            Text(jwtToken!),
          ],
        ),
      );
    } else {
      return Container();
    }
  }
}

注意,上面的代码示例中有几个关键点:

  1. Header部分:定义了令牌的类型(typ)和使用的签名算法(alg)。
  2. Payload部分:包含了令牌的签发者(iss)、接收者(aud)、签发时间(iat)、过期时间(exp)以及自定义的数据(data)。
  3. 签名密钥secretKey是用于签名JWT的密钥,在实际应用中应该妥善保管。
  4. 生成JWT:使用JwtTokenGenerator类的generateToken方法来生成JWT。

这个示例中,当用户点击按钮时,会生成一个新的JWT令牌,并在UI中显示。

请注意,jwt_token_generator插件的具体用法可能会随着版本的更新而有所变化,请参考最新的官方文档以获取最准确的信息。

回到顶部