新增游客模式

This commit is contained in:
2025-10-17 15:28:40 +08:00
parent f5bc239b6a
commit 2333ad52a9
15 changed files with 1434 additions and 53 deletions
+17 -6
View File
@@ -2,10 +2,13 @@ import 'dart:convert';
import 'package:get/get.dart';
import 'package:kaer_with_panels/app/common/app_run_data.dart';
import 'package:kaer_with_panels/app/common/app_config.dart';
import 'package:kaer_with_panels/app/mixins/kr_app_bar_opacity_mixin.dart';
import 'package:kaer_with_panels/app/model/entity_from_json_util.dart';
import 'package:kaer_with_panels/app/services/kr_site_config_service.dart';
import '../utils/kr_aes_util.dart';
import '../utils/kr_log_util.dart';
/// 接口返回基础类
class BaseResponse<T> {
@@ -18,15 +21,23 @@ class BaseResponse<T> {
BaseResponse.fromJson(Map<String, dynamic> json) {
retCode = json['code'];
final aes = AESUtils();
final dataMap = json['data'] ?? Map<String, dynamic>();
final cipherText = dataMap['data'] ?? "";
final nonce = dataMap['time'] ?? "";
if (cipherText.isNotEmpty && nonce.isNotEmpty) {
final encrypted = aes.decryptData(cipherText, "ne6t2qcz-szoa-rw78-egqz-lrsxxbl0dke3", nonce);
body = jsonDecode(encrypted);
// 判断是否需要解密:根据站点配置的 enable_security 字段
final shouldDecrypt = KRSiteConfigService().isDeviceSecurityEnabled();
if (shouldDecrypt && cipherText.isNotEmpty && nonce.isNotEmpty) {
try {
KRLogUtil.kr_i('🔓 开始解密响应数据', tag: 'BaseResponse');
final decrypted = KRAesUtil.decryptData(cipherText, nonce, AppConfig.kr_encryptionKey);
body = jsonDecode(decrypted);
KRLogUtil.kr_i('✅ 解密成功', tag: 'BaseResponse');
} catch (e) {
KRLogUtil.kr_e('❌ 解密失败: $e,使用原始数据', tag: 'BaseResponse');
body = dataMap;
}
}
else
{
+6 -4
View File
@@ -11,6 +11,7 @@ import 'package:kaer_with_panels/app/common/app_run_data.dart';
import 'package:kaer_with_panels/app/network/base_response.dart';
import 'package:kaer_with_panels/app/localization/kr_language_utils.dart';
import 'package:kaer_with_panels/app/utils/kr_common_util.dart';
import 'package:kaer_with_panels/app/services/kr_site_config_service.dart';
// import 'package:crypto/crypto.dart';
// import 'package:encrypt/encrypt.dart';
@@ -131,11 +132,12 @@ class HttpUtil {
}
var map = <String, dynamic>{};
if (path.contains("app")) {
final aes = AESUtils();
// 判断是否需要加密:根据站点配置的 enable_security 字段
final shouldEncrypt = KRSiteConfigService().isDeviceSecurityEnabled();
if (shouldEncrypt && path.contains("app")) {
KRLogUtil.kr_i('🔐 需要加密请求数据', tag: 'HttpUtil');
final plainText = jsonEncode(params);
map =
aes.encryptData(plainText, "ne6t2qcz-szoa-rw78-egqz-lrsxxbl0dke3");
map = KRAesUtil.encryptData(plainText, AppConfig.kr_encryptionKey);
} else {
map = params;
}