|
|
|
@ -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); |
|
|
|
|