init: import production code mss.nahaichuan.com (exclude Runtime/Uploads/backups/logs)
这个提交包含在:
92
test_token_extraction.php
普通文件
92
test_token_extraction.php
普通文件
@@ -0,0 +1,92 @@
|
||||
<?php
|
||||
/**
|
||||
* 测试token提取功能
|
||||
*/
|
||||
|
||||
// 模拟不同的HTTP头格式
|
||||
$testCases = [
|
||||
'Authorization: Bearer 4187d077ba6ba7b654075a16e615fac0',
|
||||
'authorization: Bearer 4187d077ba6ba7b654075a16e615fac0',
|
||||
'AUTHORIZATION: Bearer 4187d077ba6ba7b654075a16e615fac0',
|
||||
'Token: 4187d077ba6ba7b654075a16e615fac0',
|
||||
'token: 4187d077ba6ba7b654075a16e615fac0',
|
||||
];
|
||||
|
||||
// 模拟BaseController的token获取逻辑
|
||||
function testTokenExtraction($headers) {
|
||||
$token = '';
|
||||
|
||||
// 大小写不敏感的头部查找
|
||||
$authHeader = '';
|
||||
foreach ($headers as $key => $value) {
|
||||
if (strtolower($key) === 'token') {
|
||||
$token = $value;
|
||||
break;
|
||||
} elseif (strtolower($key) === 'authorization') {
|
||||
$authHeader = $value;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有找到Token头,处理Authorization头
|
||||
if (empty($token) && !empty($authHeader)) {
|
||||
// 支持Bearer token格式
|
||||
if (strpos($authHeader, 'Bearer ') === 0) {
|
||||
$token = substr($authHeader, 7);
|
||||
} elseif (strpos($authHeader, 'bearer ') === 0) {
|
||||
$token = substr($authHeader, 7);
|
||||
}
|
||||
}
|
||||
|
||||
return $token;
|
||||
}
|
||||
|
||||
// 模拟getAllHeaders的不同输出格式
|
||||
function simulateGetAllHeaders($headerString) {
|
||||
$parts = explode(': ', $headerString);
|
||||
if (count($parts) === 2) {
|
||||
return [$parts[0] => $parts[1]];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
echo "=== Token提取测试 ===\n\n";
|
||||
|
||||
foreach ($testCases as $index => $testCase) {
|
||||
echo "测试案例 " . ($index + 1) . ": $testCase\n";
|
||||
|
||||
$headers = simulateGetAllHeaders($testCase);
|
||||
$extractedToken = testTokenExtraction($headers);
|
||||
|
||||
echo "提取的token: " . ($extractedToken ?: '(空)') . "\n";
|
||||
echo "是否成功: " . ($extractedToken === '4187d077ba6ba7b654075a16e615fac0' ? '✅' : '❌') . "\n";
|
||||
echo "---\n";
|
||||
}
|
||||
|
||||
// 测试实际的HTTP环境
|
||||
echo "\n=== 实际HTTP环境测试 ===\n";
|
||||
|
||||
// 模拟$_SERVER环境
|
||||
$_SERVER['HTTP_AUTHORIZATION'] = 'Bearer 4187d077ba6ba7b654075a16e615fac0';
|
||||
|
||||
// 模拟getAllHeaders函数不存在的情况
|
||||
function testGetAllHeadersFromServer() {
|
||||
$headers = array();
|
||||
|
||||
foreach ($_SERVER as $key => $value) {
|
||||
if (strpos($key, 'HTTP_') === 0) {
|
||||
$header = str_replace('_', '-', substr($key, 5));
|
||||
$header = ucwords(strtolower($header), '-');
|
||||
$headers[$header] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $headers;
|
||||
}
|
||||
|
||||
$serverHeaders = testGetAllHeadersFromServer();
|
||||
echo "从\$_SERVER提取的headers: " . json_encode($serverHeaders, JSON_UNESCAPED_UNICODE) . "\n";
|
||||
|
||||
$finalToken = testTokenExtraction($serverHeaders);
|
||||
echo "最终提取的token: " . ($finalToken ?: '(空)') . "\n";
|
||||
echo "测试结果: " . ($finalToken === '4187d077ba6ba7b654075a16e615fac0' ? '✅ 成功' : '❌ 失败') . "\n";
|
||||
?>
|
||||
在新工单中引用
屏蔽一个用户