92 行
2.8 KiB
PHP
92 行
2.8 KiB
PHP
<?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";
|
|
?>
|