1. 新增 pnpm start:dev / pnpm start:stop 命令 - scripts/dev.mjs: 跨平台启动脚本(后端+管理端+学生端) - scripts/stop.mjs: 端口清理停止脚本 - 根 package.json 定义 pnpm 脚本 2. 修复 Flutter Web 编译(Isar 3.x + flutter_secure_storage 不兼容) - isar_database: 条件导出,Web 用空 stub - isar_journal_repository: 条件导出,Web 用空 stub - sync_engine: 条件导出,Web 用内存队列(无 Isar 持久化) - 移除 flutter_secure_storage(v9 web 插件用 dart:html) - 新增 SecureTokenStore 接口 + shared_preferences 实现 - auth_repository 改用 SecureTokenStore 接口
37 lines
1.0 KiB
Dart
37 lines
1.0 KiB
Dart
// 安全令牌存储 — Web 平台实现(shared_preferences)
|
||
//
|
||
// Web 平台上 flutter_secure_storage 不可用(dart:html 已弃用),
|
||
// 使用 shared_preferences 作为替代。
|
||
// 注意:Web 端存储不加密,但浏览器本身提供 HTTPS 传输安全。
|
||
|
||
import 'package:shared_preferences/shared_preferences.dart';
|
||
|
||
import 'secure_token_store.dart';
|
||
|
||
/// Web 平台安全令牌存储(shared_preferences)
|
||
class WebSecureTokenStore implements SecureTokenStore {
|
||
SharedPreferences? _prefs;
|
||
|
||
Future<SharedPreferences> get _instance async {
|
||
return _prefs ??= await SharedPreferences.getInstance();
|
||
}
|
||
|
||
@override
|
||
Future<String?> read(String key) async {
|
||
final prefs = await _instance;
|
||
return prefs.getString(key);
|
||
}
|
||
|
||
@override
|
||
Future<void> write(String key, String value) async {
|
||
final prefs = await _instance;
|
||
await prefs.setString(key, value);
|
||
}
|
||
|
||
@override
|
||
Future<void> delete(String key) async {
|
||
final prefs = await _instance;
|
||
await prefs.remove(key);
|
||
}
|
||
}
|