|
|
@ -86,18 +86,18 @@ |
|
|
<body> |
|
|
<body> |
|
|
<div class="login-container"> |
|
|
<div class="login-container"> |
|
|
<h2>用户登录</h2> |
|
|
<h2>用户登录</h2> |
|
|
<form id="loginForm"> |
|
|
<form id="loginForm" autocomplete="off"> |
|
|
<div class="form-group"> |
|
|
<div class="form-group"> |
|
|
<label for="projectName">职位名称</label> |
|
|
<label for="projectName">职位名称</label> |
|
|
<input type="text" id="projectName" name="projectName" placeholder="请输入职位名称" required> |
|
|
<input type="text" id="projectName" name="projectName" placeholder="请输入职位名称" required autocomplete="off"> |
|
|
</div> |
|
|
</div> |
|
|
<div class="form-group"> |
|
|
<div class="form-group"> |
|
|
<label for="userName">用户名</label> |
|
|
<label for="userName">用户名</label> |
|
|
<input type="text" id="userName" name="userName" placeholder="请输入用户名" required> |
|
|
<input type="text" id="userName" name="userName" placeholder="请输入用户名" required autocomplete="off"> |
|
|
</div> |
|
|
</div> |
|
|
<div class="form-group"> |
|
|
<div class="form-group"> |
|
|
<label for="password">密码</label> |
|
|
<label for="password">密码</label> |
|
|
<input type="password" id="password" name="password" placeholder="请输入密码" required> |
|
|
<input type="password" id="password" name="password" placeholder="请输入密码" required autocomplete="off"> |
|
|
</div> |
|
|
</div> |
|
|
<button type="submit">登录</button> |
|
|
<button type="submit">登录</button> |
|
|
<div id="errorMessage" class="error-message"></div> |
|
|
<div id="errorMessage" class="error-message"></div> |
|
|
@ -105,18 +105,114 @@ |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
|
|
|
<script> |
|
|
<script> |
|
|
document.getElementById('loginForm').addEventListener('submit', function(e) { |
|
|
// 自动填充并登录功能 |
|
|
e.preventDefault(); |
|
|
function autoLogin() { |
|
|
|
|
|
console.log('当前URL:', window.location.href); |
|
|
|
|
|
console.log('URL参数:', window.location.search); |
|
|
|
|
|
|
|
|
const projectName = document.getElementById('projectName').value; |
|
|
// 清除所有旧的登录信息,避免干扰新的URL参数 |
|
|
const userName = document.getElementById('userName').value; |
|
|
localStorage.removeItem('autoLoginInfo'); |
|
|
const password = document.getElementById('password').value; |
|
|
localStorage.removeItem('proxyLoginInfo'); |
|
|
const errorMessage = document.getElementById('errorMessage'); |
|
|
localStorage.removeItem('userInfo'); // 清除旧的用户信息 |
|
|
|
|
|
|
|
|
|
|
|
// 从URL参数获取登录信息 |
|
|
|
|
|
const urlParams = new URLSearchParams(window.location.search); |
|
|
|
|
|
let projectNameFromUrl = urlParams.get('projectName'); |
|
|
|
|
|
let userNameFromUrl = urlParams.get('userName'); |
|
|
|
|
|
let passwordFromUrl = urlParams.get('password'); |
|
|
|
|
|
|
|
|
|
|
|
// 处理双重编码的URL参数 |
|
|
|
|
|
try { |
|
|
|
|
|
if (projectNameFromUrl) { |
|
|
|
|
|
projectNameFromUrl = decodeURIComponent(projectNameFromUrl); |
|
|
|
|
|
} |
|
|
|
|
|
if (userNameFromUrl) { |
|
|
|
|
|
userNameFromUrl = decodeURIComponent(userNameFromUrl); |
|
|
|
|
|
} |
|
|
|
|
|
if (passwordFromUrl) { |
|
|
|
|
|
passwordFromUrl = decodeURIComponent(passwordFromUrl); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.error('双重解码URL参数失败:', e); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
console.log('原始URL参数值:'); |
|
|
|
|
|
console.log(' projectName:', projectNameFromUrl); |
|
|
|
|
|
console.log(' userName:', userNameFromUrl); |
|
|
|
|
|
console.log(' password:', passwordFromUrl); |
|
|
|
|
|
|
|
|
|
|
|
let loginInfo = null; |
|
|
|
|
|
|
|
|
|
|
|
// 1. 优先使用URL参数 |
|
|
|
|
|
if (userNameFromUrl && passwordFromUrl) { |
|
|
|
|
|
loginInfo = { |
|
|
|
|
|
projectName: projectNameFromUrl || '', // 允许职位名称为空 |
|
|
|
|
|
userName: userNameFromUrl, |
|
|
|
|
|
password: passwordFromUrl |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
// 从localStorage获取登录信息(支持代理页面设置) |
|
|
|
|
|
else { |
|
|
|
|
|
const storedLoginInfo = localStorage.getItem('autoLoginInfo'); |
|
|
|
|
|
const proxyLoginInfo = localStorage.getItem('proxyLoginInfo'); // 新增:支持代理页面设置的登录信息 |
|
|
|
|
|
|
|
|
|
|
|
// 2. 其次使用代理页面设置的localStorage信息 |
|
|
|
|
|
if (proxyLoginInfo) { |
|
|
|
|
|
try { |
|
|
|
|
|
loginInfo = JSON.parse(proxyLoginInfo); |
|
|
|
|
|
console.log('从proxyLoginInfo获取的登录信息:', loginInfo); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.error('解析proxyLoginInfo失败:', e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
// 3. 最后使用autoLoginInfo |
|
|
|
|
|
else if (storedLoginInfo) { |
|
|
|
|
|
try { |
|
|
|
|
|
loginInfo = JSON.parse(storedLoginInfo); |
|
|
|
|
|
console.log('从localStorage获取的登录信息:', loginInfo); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.error('解析存储的登录信息失败:', e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 强制清空表单,确保不受浏览器缓存影响 |
|
|
|
|
|
document.getElementById('projectName').value = ''; |
|
|
|
|
|
document.getElementById('userName').value = ''; |
|
|
|
|
|
document.getElementById('password').value = ''; |
|
|
|
|
|
|
|
|
|
|
|
// 如果有登录信息,自动填充并登录 |
|
|
|
|
|
if (loginInfo) { |
|
|
|
|
|
console.log('准备自动登录,登录信息:', loginInfo); |
|
|
|
|
|
|
|
|
|
|
|
// 强制更新表单值,确保使用最新的登录信息 |
|
|
|
|
|
document.getElementById('projectName').value = loginInfo.projectName; |
|
|
|
|
|
document.getElementById('userName').value = loginInfo.userName; |
|
|
|
|
|
document.getElementById('password').value = loginInfo.password; |
|
|
|
|
|
|
|
|
|
|
|
// 触发input事件,确保表单验证更新 |
|
|
|
|
|
document.getElementById('projectName').dispatchEvent(new Event('input')); |
|
|
|
|
|
document.getElementById('userName').dispatchEvent(new Event('input')); |
|
|
|
|
|
document.getElementById('password').dispatchEvent(new Event('input')); |
|
|
|
|
|
|
|
|
|
|
|
// 自动提交登录 |
|
|
|
|
|
submitLogin(loginInfo.projectName, loginInfo.userName, loginInfo.password); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 提交登录请求 |
|
|
|
|
|
function submitLogin(projectName, userName, password) { |
|
|
|
|
|
const errorMessage = document.getElementById('errorMessage'); |
|
|
errorMessage.textContent = ''; |
|
|
errorMessage.textContent = ''; |
|
|
|
|
|
|
|
|
|
|
|
console.log('准备发送登录请求,参数:', { |
|
|
|
|
|
projectName: projectName, |
|
|
|
|
|
userName: userName, |
|
|
|
|
|
password: password |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
// 发送登录请求 |
|
|
// 发送登录请求 |
|
|
fetch('http://8.137.125.67:8083/KH/api/login', { |
|
|
fetch('/KH/api/login', { |
|
|
method: 'POST', |
|
|
method: 'POST', |
|
|
headers: { |
|
|
headers: { |
|
|
'Content-Type': 'application/json' |
|
|
'Content-Type': 'application/json' |
|
|
@ -127,21 +223,105 @@ |
|
|
password: password |
|
|
password: password |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
.then(response => response.json()) |
|
|
.then(response => { |
|
|
|
|
|
console.log('登录API响应:', { |
|
|
|
|
|
status: response.status, |
|
|
|
|
|
statusText: response.statusText |
|
|
|
|
|
}); |
|
|
|
|
|
return response.json(); |
|
|
|
|
|
}) |
|
|
.then(data => { |
|
|
.then(data => { |
|
|
|
|
|
console.log('登录API响应数据:', data); |
|
|
|
|
|
|
|
|
if (data.success) { |
|
|
if (data.success) { |
|
|
// 登录成功,存储用户信息并跳转到主页面 |
|
|
// 登录成功,存储用户信息并跳转到主页面 |
|
|
|
|
|
console.log('登录成功,准备存储用户信息...'); |
|
|
localStorage.setItem('userInfo', JSON.stringify(data)); |
|
|
localStorage.setItem('userInfo', JSON.stringify(data)); |
|
|
window.location.href = 'index.html'; |
|
|
console.log('用户信息已存储,localStorage内容:', localStorage.getItem('userInfo')); |
|
|
|
|
|
|
|
|
|
|
|
// 清除自动登录信息 |
|
|
|
|
|
localStorage.removeItem('autoLoginInfo'); |
|
|
|
|
|
localStorage.removeItem('proxyLoginInfo'); // 新增:清除代理登录信息 |
|
|
|
|
|
|
|
|
|
|
|
console.log('准备跳转到index.html...'); |
|
|
|
|
|
// 优化:使用绝对路径跳转 |
|
|
|
|
|
window.location.href = '/KH/index.html'; |
|
|
} else { |
|
|
} else { |
|
|
|
|
|
console.log('登录失败,错误信息:', data.message); |
|
|
errorMessage.textContent = data.message; |
|
|
errorMessage.textContent = data.message; |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
.catch(error => { |
|
|
.catch(error => { |
|
|
console.error('登录失败:', error); |
|
|
console.error('登录请求失败:', error); |
|
|
errorMessage.textContent = '登录失败,请重试'; |
|
|
errorMessage.textContent = '登录失败,请重试'; |
|
|
}); |
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 表单提交处理 |
|
|
|
|
|
document.getElementById('loginForm').addEventListener('submit', function(e) { |
|
|
|
|
|
e.preventDefault(); |
|
|
|
|
|
|
|
|
|
|
|
const projectName = document.getElementById('projectName').value; |
|
|
|
|
|
const userName = document.getElementById('userName').value; |
|
|
|
|
|
const password = document.getElementById('password').value; |
|
|
|
|
|
|
|
|
|
|
|
submitLogin(projectName, userName, password); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 新增:监听来自其他页面的消息(支持代理页面通过postMessage传递登录信息) |
|
|
|
|
|
window.addEventListener('message', function(event) { |
|
|
|
|
|
console.log('收到来自其他页面的消息:', event); |
|
|
|
|
|
|
|
|
|
|
|
// 验证消息来源(可选,增强安全性) |
|
|
|
|
|
if (event.origin === 'http://8.137.125.67:3005' || event.origin === 'http://8.137.125.67:8083') { |
|
|
|
|
|
try { |
|
|
|
|
|
const messageData = event.data; |
|
|
|
|
|
if (messageData.type === 'LOGIN_INFO') { |
|
|
|
|
|
console.log('收到登录信息:', messageData.data); |
|
|
|
|
|
|
|
|
|
|
|
// 存储到localStorage |
|
|
|
|
|
localStorage.setItem('proxyLoginInfo', JSON.stringify(messageData.data)); |
|
|
|
|
|
|
|
|
|
|
|
// 重新检查登录信息 |
|
|
|
|
|
autoLogin(); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
console.error('处理消息失败:', e); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 页面加载时检查是否有登录信息 |
|
|
|
|
|
window.onload = function() { |
|
|
|
|
|
// 页面加载时立即强制清空表单数据,防止浏览器自动填充 |
|
|
|
|
|
document.getElementById('projectName').value = ''; |
|
|
|
|
|
document.getElementById('userName').value = ''; |
|
|
|
|
|
document.getElementById('password').value = ''; |
|
|
|
|
|
|
|
|
|
|
|
// 延迟调用autoLogin,确保表单清空后再处理URL参数 |
|
|
|
|
|
setTimeout(function() { |
|
|
|
|
|
autoLogin(); |
|
|
|
|
|
}, 100); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// 新增:支持从外部调用的登录函数(用于代理页面直接调用) |
|
|
|
|
|
window.externalLogin = function(projectName, userName, password) { |
|
|
|
|
|
console.log('外部调用登录函数,登录信息:', { |
|
|
|
|
|
projectName: projectName, |
|
|
|
|
|
userName: userName, |
|
|
|
|
|
password: password |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 存储到localStorage |
|
|
|
|
|
localStorage.setItem('proxyLoginInfo', JSON.stringify({ |
|
|
|
|
|
projectName: projectName, |
|
|
|
|
|
userName: userName, |
|
|
|
|
|
password: password |
|
|
|
|
|
})); |
|
|
|
|
|
|
|
|
|
|
|
// 调用登录函数 |
|
|
|
|
|
submitLogin(projectName, userName, password); |
|
|
|
|
|
}; |
|
|
</script> |
|
|
</script> |
|
|
</body> |
|
|
</body> |
|
|
</html> |
|
|
</html> |