0.1 解决登录注册信息匹配问题

majiayan_branch
psnci6hgk 3 months ago
parent dcedd71e90
commit d8636acc98

@ -77,12 +77,7 @@ const saveUserToStorage = (userData) => {
// 清除用户数据
const clearUserData = () => {
// 清除当前用户的独立存储
if (userInfo.value.username) {
const userInfoKey = `userInfo_${userInfo.value.username}`
localStorage.removeItem(userInfoKey)
}
// 清除通用存储(兼容旧版本)
// 只清除通用存储(兼容旧版本),不删除用户详细信息
localStorage.removeItem('userInfo')
localStorage.removeItem('userToken')
userInfo.value = {
@ -106,22 +101,26 @@ const login = (loginData) => {
// 首先检查用户是否已注册
const userRegistryKey = `userRegistry_${loginData.username}`
const existingRegistry = localStorage.getItem(userRegistryKey)
if (!existingRegistry) {
reject({ success: false, message: '用户不存在,请先注册' })
return
}
// 校验密码
let registryObj = null
try {
registryObj = JSON.parse(existingRegistry)
} catch (e) {
reject({ success: false, message: '用户注册信息损坏,请重新注册' })
return
}
if (!registryObj.password || registryObj.password !== loginData.password) {
reject({ success: false, message: '密码错误' })
return
}
// 优先从用户特定的存储中加载用户数据
const userInfoKey = `userInfo_${loginData.username}`
let storedUser = localStorage.getItem(userInfoKey)
let userData
console.log('登录调试 - 用户信息键:', userInfoKey)
console.log('登录调试 - 用户信息数据:', storedUser)
console.log('登录调试 - 所有用户信息键:', Object.keys(localStorage).filter(key => key.startsWith('userInfo_')))
let userData = null;
if (storedUser) {
try {
const existingUser = JSON.parse(storedUser)
@ -130,52 +129,34 @@ const login = (loginData) => {
isLoggedIn: true
}
} catch (error) {
// 如果解析失败,尝试从通用存储加载
storedUser = localStorage.getItem('userInfo')
if (storedUser) {
try {
const existingUser = JSON.parse(storedUser)
if (existingUser.username === loginData.username) {
userData = {
...existingUser,
isLoggedIn: true
}
} else {
reject({ success: false, message: '用户数据不匹配,请重新注册' })
return
}
} catch (error2) {
reject({ success: false, message: '用户数据损坏,请重新注册' })
return
}
} else {
reject({ success: false, message: '用户数据不存在,请重新注册' })
return
// 解析失败,自动用注册信息生成默认用户信息
userData = {
username: registryObj.username,
nickname: registryObj.username,
avatar: 'https://avatars.githubusercontent.com/u/9919?v=4',
birthday: '2000-01-01',
occupation: '未知',
hobbies: 'ta一点也没透露',
bio: '这是一个新用户',
isLoggedIn: true
}
// 自动修复本地存储
localStorage.setItem(userInfoKey, JSON.stringify(userData))
}
} else {
// 没有用户特定数据,尝试从通用存储加载
storedUser = localStorage.getItem('userInfo')
if (storedUser) {
try {
const existingUser = JSON.parse(storedUser)
if (existingUser.username === loginData.username) {
userData = {
...existingUser,
isLoggedIn: true
}
} else {
reject({ success: false, message: '用户数据不匹配,请重新注册' })
return
}
} catch (error) {
reject({ success: false, message: '用户数据损坏,请重新注册' })
return
}
} else {
reject({ success: false, message: '用户数据不存在,请重新注册' })
return
// userInfo_用户名 丢失,自动用注册信息生成默认用户信息
userData = {
username: registryObj.username,
nickname: registryObj.username,
avatar: 'https://avatars.githubusercontent.com/u/9919?v=4',
birthday: '2000-01-01',
occupation: '未知',
hobbies: 'ta一点也没透露',
bio: '这是一个新用户',
isLoggedIn: true
}
// 自动修复本地存储
localStorage.setItem(userInfoKey, JSON.stringify(userData))
}
userInfo.value = userData
@ -220,9 +201,10 @@ const register = (registerData) => {
isLoggedIn: true
}
// 保存用户注册记录
// 保存用户注册记录(包含密码)
localStorage.setItem(userRegistryKey, JSON.stringify({
username: registerData.username,
password: registerData.password,
registeredAt: Date.now()
}))

Loading…
Cancel
Save