This commit is contained in:
Vaica committed 2026-06-22 13:01:37 +08:00
1 parent f99ddec735
commit 8cd35ca127
9 files changed
+263 -45

No files matched your search

+24 -15
View File
@@ -39,6 +39,26 @@ h1{font-size:20px;color:#1d3d6c;margin-bottom:4px;font-weight:700}
</form>
</div>
<script>
var EXPIRE_MS = 3 * 60 * 60 * 1000; // 3小时过期
function getAuth() {
try {
var raw = localStorage.getItem('wauth');
if (!raw) return null;
var data = JSON.parse(raw);
if (!data.token || !data.time) { localStorage.removeItem('wauth'); return null; }
if (Date.now() - data.time > EXPIRE_MS) { localStorage.removeItem('wauth'); return null; }
return data.token;
} catch(e) {
localStorage.removeItem('wauth');
return null;
}
}
function setAuth(tok) {
localStorage.setItem('wauth', JSON.stringify({ token: tok, time: Date.now() }));
}
document.getElementById('form').addEventListener('submit', async function(e) {
e.preventDefault();
var btn = document.getElementById('btn');
@@ -52,22 +72,16 @@ document.getElementById('form').addEventListener('submit', async function(e) {
var tok = btoa(u + ':' + p);
try {
// 验证凭据
var res = await fetch('/auth/check', {
headers: { 'Authorization': 'Basic ' + tok }
});
if (!res.ok) {
throw new Error('auth failed');
}
if (!res.ok) throw new Error('auth failed');
// 存储凭据
localStorage.setItem('wauth', tok);
setAuth(tok);
// 注册 Service Worker
if ('serviceWorker' in navigator) {
var reg = await navigator.serviceWorker.register('/sw.js');
// 等待 SW 激活
if (reg.installing) {
await new Promise(function(resolve) {
reg.installing.addEventListener('statechange', function() {
@@ -75,18 +89,13 @@ document.getElementById('form').addEventListener('submit', async function(e) {
});
});
}
// 发送 token 给 SW
var sw = reg.active || reg.waiting || reg.installing;
if (sw) {
sw.postMessage({ type: 'SET_TOKEN', token: tok });
}
// 确保 SW 控制当前页面
if (sw) sw.postMessage({ type: 'SET_TOKEN', token: tok });
if (navigator.serviceWorker.controller) {
navigator.serviceWorker.controller.postMessage({ type: 'SET_TOKEN', token: tok });
}
}
// 跳转到主页
location.href = '/';
} catch (err2) {
err.style.display = 'block';
@@ -97,7 +106,7 @@ document.getElementById('form').addEventListener('submit', async function(e) {
// 已登录则验证后跳转
(function(){
var tok = localStorage.getItem('wauth');
var tok = getAuth();
if (!tok) return;
fetch('/auth/check', { headers: { 'Authorization': 'Basic ' + tok } }).then(function(r) {
if (r.ok) {