Flutter安全令牌管理插件flutter_secure_token_manager的使用
Flutter安全令牌管理插件flutter_secure_token_manager的使用
安全令牌管理插件是什么?
它的功能
- 安全存储: 安全地存储访问令牌和刷新令牌。
 - 高效的令牌刷新: 当令牌过期时,高效地刷新访问令牌,确保即使多个请求同时检测到令牌过期,也只会发出一个刷新请求。
 - 令牌过期检查: 提供一种机制来检查令牌是否已过期(仅适用于JWT)。
 
实现步骤
- 
添加包: 在你的Flutter项目中包含该包。
dependencies: flutter_secure_token_manager: ^latest_version - 
设置登录后的令牌: 每当令牌发生变化时,使用以下代码设置令牌。
FlutterSecureTokenManager().setToken(Token(accessToken, refreshToken)); - 
实现令牌过期检查: 如果你的令牌不是JWT,设置过期检查逻辑(通常在开始时进行一次)。
FlutterSecureTokenManager().isTokenExpired = (accessToken) async { // 你的逻辑在这里 // 返回true或false }; - 
令牌刷新逻辑: 实现当令牌过期时刷新令牌的逻辑。
FlutterSecureTokenManager().onTokenExpired = (refreshToken) async { // 你的逻辑在这里,使用refreshToken获取新的访问令牌 // 返回新令牌 }; - 
访问令牌检索: 在需要访问令牌的地方使用以下代码。该包将自动处理刷新。
headers: { "Authorization": "Bearer ${await FlutterSecureTokenManager().getAccessToken()}" } 
注意:请确保这些步骤适当地集成到你的应用程序流程中,特别是在登录过程和进行身份验证请求之前。
🚀 积极寻求反馈和建议,以进一步增强此插件的价值!分享你的想法以贡献其改进。如果你有任何问题或遇到问题,请随时联系。祝你编程愉快! 🙌
### 示例代码
#### `example/lib/main.dart`
```dart
import 'package:example/home_screen.dart';
import 'package:flutter/material.dart';
void main() {
  runApp(const TokenManagerDemoApp());
}
class TokenManagerDemoApp extends StatelessWidget {
  const TokenManagerDemoApp({super.key});
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Flutter Secure Token Manager Demo",
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const HomeScreen(),
    );
  }
}
更多关于Flutter安全令牌管理插件flutter_secure_token_manager的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter安全令牌管理插件flutter_secure_token_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用 flutter_secure_token_manager 插件来管理安全令牌的代码示例。flutter_secure_token_manager 是一个 Flutter 插件,用于在 Android 和 iOS 上安全地存储和管理令牌。
首先,确保你已经在 pubspec.yaml 文件中添加了 flutter_secure_token_manager 依赖:
dependencies:
  flutter:
    sdk: flutter
  flutter_secure_token_manager: ^latest_version  # 请替换为最新版本号
然后运行 flutter pub get 来获取依赖。
接下来是一个简单的示例代码,展示如何使用 flutter_secure_token_manager 存储和检索安全令牌。
import 'package:flutter/material.dart';
import 'package:flutter_secure_token_manager/flutter_secure_token_manager.dart';
void main() {
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Secure Token Manager Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
  final FlutterSecureTokenManager _tokenManager = FlutterSecureTokenManager();
  String _retrievedToken = '';
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Secure Token Manager Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Stored Token:',
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 10),
            Text(
              _retrievedToken,
              style: TextStyle(fontSize: 16),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                String token = 'your_secure_token_here'; // 替换为你的安全令牌
                bool isStored = await _tokenManager.storeToken(key: 'authToken', token: token);
                if (isStored) {
                  setState(() {
                    _retrievedToken = 'Token stored successfully!';
                  });
                  // 检索并显示令牌
                  String retrievedToken = await _tokenManager.retrieveToken(key: 'authToken');
                  setState(() {
                    _retrievedToken = retrievedToken ?? 'No token retrieved';
                  });
                } else {
                  setState(() {
                    _retrievedToken = 'Failed to store token';
                  });
                }
              },
              child: Text('Store and Retrieve Token'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                bool isDeleted = await _tokenManager.deleteToken(key: 'authToken');
                if (isDeleted) {
                  setState(() {
                    _retrievedToken = 'Token deleted successfully!';
                  });
                } else {
                  setState(() {
                    _retrievedToken = 'Failed to delete token';
                  });
                }
              },
              child: Text('Delete Token'),
            ),
          ],
        ),
      ),
    );
  }
}
在这个示例中:
- 我们创建了一个 Flutter 应用,包含一个主页面 
MyHomePage。 - 在 
MyHomePage中,我们实例化了一个FlutterSecureTokenManager对象。 - 我们提供了两个按钮,一个用于存储和检索令牌,另一个用于删除令牌。
 - 当用户点击“Store and Retrieve Token”按钮时,令牌将被存储,并立即尝试检索和显示。
 - 当用户点击“Delete Token”按钮时,将尝试删除存储的令牌。
 
请确保在实际应用中,不要将敏感信息硬编码到代码中,而是从安全的来源获取令牌,例如服务器响应或用户输入。
        
      
            
            
            
