Browse Source

feat(网络拦截器): 添加请求签名和时间戳头

在请求头中添加时间戳和基于MD5的签名,与Go端保持一致的验证机制
weicu
liwei1dao 10 months ago
parent
commit
13971c3b2e
  1. 13
      lib/data/services/network/auth_interceptor.dart

13
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<String>("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);

Loading…
Cancel
Save