主要修复: - 修复登录流程逻辑顺序,先保存Token再调用getUserInfo API - 解决纯JavaScript RSA加密兼容性问题,替代JSEncrypt - 创建Token测试工具,便于调试和状态检查 - 优化请求头配置,符合后端API要求 技术改进: - 新增encrypt-pure.js:纯JavaScript RSA加密实现 - 新增token-test.js:Token存储和状态测试工具 - 优化request.js:增强Token获取和调试功能 - 更新login/index.vue:修复登录流程和添加测试功能 解决问题: - ✅ authorization请求头不再为空 - ✅ AES+RSA双重加密登录正常工作 - ✅ uni-app环境下RSA加密兼容性问题已解决 - ✅ 完整的登录认证流程验证通过
80 lines
2.5 KiB
JavaScript
80 lines
2.5 KiB
JavaScript
// Token测试工具
|
|
export function testTokenStorage() {
|
|
console.log('🧪 开始Token存储测试...');
|
|
|
|
try {
|
|
// 1. 清除现有Token
|
|
uni.removeStorageSync('access_token');
|
|
console.log('🗑️ 已清除现有Token');
|
|
|
|
// 2. 测试存储Token
|
|
const testToken =
|
|
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJzeXNfdXNlcjoxIn0.test';
|
|
uni.setStorageSync('access_token', testToken);
|
|
console.log('💾 已存储测试Token');
|
|
|
|
// 3. 测试获取Token
|
|
const retrievedToken = uni.getStorageSync('access_token');
|
|
console.log(
|
|
'📖 获取到的Token:',
|
|
retrievedToken ? retrievedToken.substring(0, 30) + '...' : '❌ 为空',
|
|
);
|
|
|
|
// 4. 验证Token是否一致
|
|
if (retrievedToken === testToken) {
|
|
console.log('✅ Token存储和获取测试通过');
|
|
return true;
|
|
} else {
|
|
console.log('❌ Token存储和获取测试失败');
|
|
return false;
|
|
}
|
|
} catch (error) {
|
|
console.error('❌ Token测试失败:', error);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取当前存储的Token信息
|
|
*/
|
|
export function getCurrentTokenInfo() {
|
|
try {
|
|
const token = uni.getStorageSync('access_token');
|
|
const userInfo = uni.getStorageSync('userInfo');
|
|
const isLoggedIn = uni.getStorageSync('isLoggedIn');
|
|
|
|
console.log('📊 当前存储状态:');
|
|
console.log(' 🎫 Token:', token ? `存在 (${token.length}字符)` : '❌ 不存在');
|
|
console.log(' 👤 用户信息:', userInfo ? '存在' : '❌ 不存在');
|
|
console.log(' 🔐 登录状态:', isLoggedIn ? '已登录' : '❌ 未登录');
|
|
|
|
return {
|
|
hasToken: !!token,
|
|
tokenLength: token ? token.length : 0,
|
|
hasUserInfo: !!userInfo,
|
|
isLoggedIn: !!isLoggedIn,
|
|
};
|
|
} catch (error) {
|
|
console.error('❌ 获取Token信息失败:', error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 清除所有登录信息
|
|
*/
|
|
export function clearAllLoginInfo() {
|
|
try {
|
|
uni.removeStorageSync('access_token');
|
|
uni.removeStorageSync('userInfo');
|
|
uni.removeStorageSync('isLoggedIn');
|
|
uni.removeStorageSync('refresh_token');
|
|
|
|
console.log('🗑️ 已清除所有登录信息');
|
|
return true;
|
|
} catch (error) {
|
|
console.error('❌ 清除登录信息失败:', error);
|
|
return false;
|
|
}
|
|
}
|