From 13971c3b2ec3da48b362984806c6dc2834270c23 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Mon, 8 Dec 2025 17:16:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=BD=91=E7=BB=9C=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E5=99=A8):=20=E6=B7=BB=E5=8A=A0=E8=AF=B7=E6=B1=82=E7=AD=BE?= =?UTF-8?q?=E5=90=8D=E5=92=8C=E6=97=B6=E9=97=B4=E6=88=B3=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在请求头中添加时间戳和基于MD5的签名,与Go端保持一致的验证机制 --- lib/data/services/network/auth_interceptor.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/data/services/network/auth_interceptor.dart b/lib/data/services/network/auth_interceptor.dart index 2933d5d62..c25accc3b 100644 --- a/lib/data/services/network/auth_interceptor.dart +++ b/lib/data/services/network/auth_interceptor.dart @@ -1,20 +1,33 @@ import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart' hide Response; +import 'dart:convert'; +import 'package:crypto/crypto.dart'; import 'package:get_storage/get_storage.dart'; import 'entity/base_entity.dart'; class AuthInterceptor extends Interceptor { final GetStorage _storage = GetStorage(); + final String _signKey = '@214%67g15q4*67m17#4l67!'; // 替换为实际的密钥 @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) { var jsonString = _storage.read("logintoken"); options.headers['Authorization'] = jsonString; + final timestamp = DateTime.now().millisecondsSinceEpoch.toString(); + options.headers['Ts'] = timestamp; + options.headers['Sign'] = _generateSign(timestamp); handler.next(options); } + String _generateSign(String timestamp) { + // 按照“MD5(私钥 + 时间戳)”生成签名,与 Go 端保持一致 + final signStr = 'ts=${timestamp}key=${_signKey}'; + print("signStr: $signStr"); + return md5.convert(utf8.encode(signStr)).toString(); + } + @override void onResponse(Response response, ResponseInterceptorHandler handler) async { BaseEntity entity = BaseEntity.fromJson(response.data);