fix: avoid social callback session race
This commit is contained in:
@@ -215,6 +215,13 @@ function savePendingSocialBind(data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function hasSocialCallback() {
|
||||||
|
const params = new URLSearchParams(window.location.search || '')
|
||||||
|
const provider = String(params.get('provider') || params.get('type') || '').trim()
|
||||||
|
const code = String(params.get('code') || '').trim()
|
||||||
|
return Boolean(provider && code)
|
||||||
|
}
|
||||||
|
|
||||||
async function handleSocialCallback() {
|
async function handleSocialCallback() {
|
||||||
const params = new URLSearchParams(window.location.search || '')
|
const params = new URLSearchParams(window.location.search || '')
|
||||||
const provider = String(params.get('provider') || params.get('type') || '').trim()
|
const provider = String(params.get('provider') || params.get('type') || '').trim()
|
||||||
@@ -391,8 +398,11 @@ function goRegister() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
if (hasSocialCallback()) {
|
||||||
|
await handleSocialCallback()
|
||||||
|
return
|
||||||
|
}
|
||||||
await loadSocialConfig()
|
await loadSocialConfig()
|
||||||
await handleSocialCallback()
|
|
||||||
if (needCaptcha.value) {
|
if (needCaptcha.value) {
|
||||||
await refreshLoginCaptcha()
|
await refreshLoginCaptcha()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -302,7 +302,7 @@
|
|||||||
"name": "vendor-vue"
|
"name": "vendor-vue"
|
||||||
},
|
},
|
||||||
"index.html": {
|
"index.html": {
|
||||||
"file": "assets/app-D7SWy-KG.js",
|
"file": "assets/app-BV_xMlg4.js",
|
||||||
"name": "app",
|
"name": "app",
|
||||||
"src": "index.html",
|
"src": "index.html",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -323,7 +323,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"login.html": {
|
"login.html": {
|
||||||
"file": "assets/login-C88J0b5r.js",
|
"file": "assets/login-D0qy0-VA.js",
|
||||||
"name": "login",
|
"name": "login",
|
||||||
"src": "login.html",
|
"src": "login.html",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
@@ -401,7 +401,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/pages/LoginPage.vue": {
|
"src/pages/LoginPage.vue": {
|
||||||
"file": "assets/LoginPage-N6sdjwkY.js",
|
"file": "assets/LoginPage-B-9NNWX9.js",
|
||||||
"name": "LoginPage",
|
"name": "LoginPage",
|
||||||
"src": "src/pages/LoginPage.vue",
|
"src": "src/pages/LoginPage.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
@@ -418,7 +418,7 @@
|
|||||||
"_auth-CuW_jyJD.js"
|
"_auth-CuW_jyJD.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/LoginPage-CSaMrhQm.css"
|
"assets/LoginPage-udDwyYMW.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"src/pages/RegisterPage.vue": {
|
"src/pages/RegisterPage.vue": {
|
||||||
|
|||||||
1
static/app/assets/LoginPage-B-9NNWX9.js
Normal file
1
static/app/assets/LoginPage-B-9NNWX9.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
static/app/assets/LoginPage-udDwyYMW.css
Normal file
1
static/app/assets/LoginPage-udDwyYMW.css
Normal file
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
|||||||
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginPage-N6sdjwkY.js","./vendor-vue-Da_zwKNU.js","./SocialLoginButtons-BaFXslgf.js","./base-C_0HtztH.js","./base-CiSqh4F9.css","./el-overlay-ckkTzDcK.js","./aria-DLpFpzDe.js","./http-BDcxFXLM.js","./vendor-axios-B9ygI19o.js","./index-D04QrwME.js","./el-overlay-hkg5a9kt.css","./auth-CuW_jyJD.js","./style-CEbARg1o.js","./style-BHGuKLUF.css","./SocialLoginButtons-qO3SCoE7.css","./LoginPage-CSaMrhQm.css","./RegisterPage-Bypz6ilN.js","./el-card-cnxuvbL3.js","./el-card-BqOrgVp1.css","./el-alert-BgJljmz-.js","./el-button-xGNUoXVX.js","./el-button-BRDnKxwT.css","./el-input-nl0Ylqa_.js","./el-input-D6B3r8CH.css","./el-alert-B-NgiIln.css","./password-7ryi82gE.js","./RegisterPage-LYXwWYc1.css","./ResetPasswordPage-Znm7wIOo.js","./ResetPasswordPage-DAB63ins.css","./SocialBindCallbackPage-BXLD-LiQ.js","./el-skeleton-item-cWa5ANvD.js","./el-skeleton-item-BLY1jEuR.css","./settings-C8OWd3zp.js","./SocialBindCallbackPage-BZgzv_7a.css","./VerifyResultPage-Du3cLyZ2.js","./VerifyResultPage-BnGv8vyq.css","./AppLayout-8mkxrTVV.js","./user-DIrCtqzm.js","./el-popper-_4NhtSRX.js","./el-popper-BrfLRiIr.css","./user-B5lTGWdM.css","./AppLayout-C0FaVSZn.css","./AccountsPage-DZM5eF8A.js","./accounts-HALpNswY.js","./accounts-DqlHDq0H.css","./el-select-BADfKG7m.js","./el-select-B0XIb2QK.css","./vendor-realtime-CA1CrNgP.js","./AccountsPage-DKewJ7S7.css","./SchedulesPage-vAAprGPM.js","./el-pagination-D16TMO1B.js","./el-pagination-B1FwbX1n.css","./SchedulesPage-Dxq2ghmQ.css","./ScreenshotsPage-DrfiqfWk.js","./ScreenshotsPage-BhLfAzHf.css"])))=>i.map(i=>d[i]);
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./LoginPage-B-9NNWX9.js","./vendor-vue-Da_zwKNU.js","./SocialLoginButtons-BaFXslgf.js","./base-C_0HtztH.js","./base-CiSqh4F9.css","./el-overlay-ckkTzDcK.js","./aria-DLpFpzDe.js","./http-BDcxFXLM.js","./vendor-axios-B9ygI19o.js","./index-D04QrwME.js","./el-overlay-hkg5a9kt.css","./auth-CuW_jyJD.js","./style-CEbARg1o.js","./style-BHGuKLUF.css","./SocialLoginButtons-qO3SCoE7.css","./LoginPage-udDwyYMW.css","./RegisterPage-Bypz6ilN.js","./el-card-cnxuvbL3.js","./el-card-BqOrgVp1.css","./el-alert-BgJljmz-.js","./el-button-xGNUoXVX.js","./el-button-BRDnKxwT.css","./el-input-nl0Ylqa_.js","./el-input-D6B3r8CH.css","./el-alert-B-NgiIln.css","./password-7ryi82gE.js","./RegisterPage-LYXwWYc1.css","./ResetPasswordPage-Znm7wIOo.js","./ResetPasswordPage-DAB63ins.css","./SocialBindCallbackPage-BXLD-LiQ.js","./el-skeleton-item-cWa5ANvD.js","./el-skeleton-item-BLY1jEuR.css","./settings-C8OWd3zp.js","./SocialBindCallbackPage-BZgzv_7a.css","./VerifyResultPage-Du3cLyZ2.js","./VerifyResultPage-BnGv8vyq.css","./AppLayout-8mkxrTVV.js","./user-DIrCtqzm.js","./el-popper-_4NhtSRX.js","./el-popper-BrfLRiIr.css","./user-B5lTGWdM.css","./AppLayout-C0FaVSZn.css","./AccountsPage-DZM5eF8A.js","./accounts-HALpNswY.js","./accounts-DqlHDq0H.css","./el-select-BADfKG7m.js","./el-select-B0XIb2QK.css","./vendor-realtime-CA1CrNgP.js","./AccountsPage-DKewJ7S7.css","./SchedulesPage-vAAprGPM.js","./el-pagination-D16TMO1B.js","./el-pagination-B1FwbX1n.css","./SchedulesPage-Dxq2ghmQ.css","./ScreenshotsPage-DrfiqfWk.js","./ScreenshotsPage-BhLfAzHf.css"])))=>i.map(i=>d[i]);
|
||||||
import{_ as v}from"./style-CEbARg1o.js";import{r as g,c as R,o as y,a as A,b as L,d as k,e as b}from"./vendor-vue-Da_zwKNU.js";const w={};function V(p,l){const a=g("RouterView");return y(),R(a)}const O=v(w,[["render",V]]),T="modulepreload",D=function(p,l){return new URL(p,l).href},f={},o=function(l,a,u){let _=Promise.resolve();if(a&&a.length>0){let P=function(e){return Promise.all(e.map(s=>Promise.resolve(s).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),h=t?.nonce||t?.getAttribute("nonce");_=P(a.map(e=>{if(e=D(e,u),e in f)return;f[e]=!0;const s=e.endsWith(".css"),c=s?'[rel="stylesheet"]':"";if(u)for(let i=n.length-1;i>=0;i--){const m=n[i];if(m.href===e&&(!s||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${c}`))return;const r=document.createElement("link");if(r.rel=s?"stylesheet":T,s||(r.as="script"),r.crossOrigin="",r.href=e,h&&r.setAttribute("nonce",h),document.head.appendChild(r),s)return new Promise((i,m)=>{r.addEventListener("load",i),r.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${e}`)))})}))}function d(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return _.then(n=>{for(const t of n||[])t.status==="rejected"&&d(t.reason);return l().catch(d)})},I=()=>o(()=>import("./LoginPage-N6sdjwkY.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),S=()=>o(()=>import("./RegisterPage-Bypz6ilN.js"),__vite__mapDeps([16,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,26]),import.meta.url),C=()=>o(()=>import("./ResetPasswordPage-Znm7wIOo.js"),__vite__mapDeps([27,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,28]),import.meta.url),$=()=>o(()=>import("./SocialBindCallbackPage-BXLD-LiQ.js"),__vite__mapDeps([29,3,1,4,17,18,30,31,11,7,8,32,12,13,33]),import.meta.url),E=()=>o(()=>import("./VerifyResultPage-Du3cLyZ2.js"),__vite__mapDeps([34,3,1,4,17,18,20,9,21,12,13,35]),import.meta.url),B=()=>o(()=>import("./AppLayout-8mkxrTVV.js"),__vite__mapDeps([36,3,1,4,37,19,20,9,21,22,7,8,6,23,24,38,5,10,39,40,30,31,11,32,2,12,13,14,25,41]),import.meta.url),N=()=>o(()=>import("./AccountsPage-DZM5eF8A.js"),__vite__mapDeps([42,3,1,4,5,6,7,8,9,10,19,20,21,22,23,24,43,37,38,39,40,44,30,31,45,46,17,18,32,47,12,13,48]),import.meta.url),j=()=>o(()=>import("./SchedulesPage-vAAprGPM.js"),__vite__mapDeps([49,3,1,4,38,22,7,8,6,20,9,21,23,5,10,39,19,24,45,46,43,37,40,44,50,51,17,18,30,31,12,13,52]),import.meta.url),q=()=>o(()=>import("./ScreenshotsPage-DrfiqfWk.js"),__vite__mapDeps([53,3,1,4,5,6,7,8,9,10,50,45,38,22,20,21,23,39,46,51,17,18,30,31,12,13,54]),import.meta.url),x=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:I},{path:"/register",name:"register",component:S},{path:"/reset-password/:token",name:"reset_password",component:C},{path:"/social-bind-callback",name:"social_bind_callback",component:$},{path:"/api/verify-email/:token",name:"verify_email",component:E},{path:"/api/verify-bind-email/:token",name:"verify_bind_email",component:E},{path:"/app",component:B,children:[{path:"",redirect:"/app/accounts"},{path:"accounts",name:"accounts",component:N},{path:"schedules",name:"schedules",component:j},{path:"screenshots",name:"screenshots",component:q}]},{path:"/:pathMatch(.*)*",redirect:"/login"}],M=A({history:L(),routes:x});k(O).use(b()).use(M).mount("#app");
|
import{_ as v}from"./style-CEbARg1o.js";import{r as g,c as R,o as y,a as A,b as L,d as k,e as b}from"./vendor-vue-Da_zwKNU.js";const w={};function V(p,l){const a=g("RouterView");return y(),R(a)}const O=v(w,[["render",V]]),T="modulepreload",D=function(p,l){return new URL(p,l).href},f={},o=function(l,a,u){let _=Promise.resolve();if(a&&a.length>0){let P=function(e){return Promise.all(e.map(s=>Promise.resolve(s).then(c=>({status:"fulfilled",value:c}),c=>({status:"rejected",reason:c}))))};const n=document.getElementsByTagName("link"),t=document.querySelector("meta[property=csp-nonce]"),h=t?.nonce||t?.getAttribute("nonce");_=P(a.map(e=>{if(e=D(e,u),e in f)return;f[e]=!0;const s=e.endsWith(".css"),c=s?'[rel="stylesheet"]':"";if(u)for(let i=n.length-1;i>=0;i--){const m=n[i];if(m.href===e&&(!s||m.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${e}"]${c}`))return;const r=document.createElement("link");if(r.rel=s?"stylesheet":T,s||(r.as="script"),r.crossOrigin="",r.href=e,h&&r.setAttribute("nonce",h),document.head.appendChild(r),s)return new Promise((i,m)=>{r.addEventListener("load",i),r.addEventListener("error",()=>m(new Error(`Unable to preload CSS for ${e}`)))})}))}function d(n){const t=new Event("vite:preloadError",{cancelable:!0});if(t.payload=n,window.dispatchEvent(t),!t.defaultPrevented)throw n}return _.then(n=>{for(const t of n||[])t.status==="rejected"&&d(t.reason);return l().catch(d)})},I=()=>o(()=>import("./LoginPage-B-9NNWX9.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),S=()=>o(()=>import("./RegisterPage-Bypz6ilN.js"),__vite__mapDeps([16,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,26]),import.meta.url),C=()=>o(()=>import("./ResetPasswordPage-Znm7wIOo.js"),__vite__mapDeps([27,3,1,4,17,18,19,20,9,21,22,7,8,6,23,24,11,25,12,13,28]),import.meta.url),$=()=>o(()=>import("./SocialBindCallbackPage-BXLD-LiQ.js"),__vite__mapDeps([29,3,1,4,17,18,30,31,11,7,8,32,12,13,33]),import.meta.url),E=()=>o(()=>import("./VerifyResultPage-Du3cLyZ2.js"),__vite__mapDeps([34,3,1,4,17,18,20,9,21,12,13,35]),import.meta.url),B=()=>o(()=>import("./AppLayout-8mkxrTVV.js"),__vite__mapDeps([36,3,1,4,37,19,20,9,21,22,7,8,6,23,24,38,5,10,39,40,30,31,11,32,2,12,13,14,25,41]),import.meta.url),N=()=>o(()=>import("./AccountsPage-DZM5eF8A.js"),__vite__mapDeps([42,3,1,4,5,6,7,8,9,10,19,20,21,22,23,24,43,37,38,39,40,44,30,31,45,46,17,18,32,47,12,13,48]),import.meta.url),j=()=>o(()=>import("./SchedulesPage-vAAprGPM.js"),__vite__mapDeps([49,3,1,4,38,22,7,8,6,20,9,21,23,5,10,39,19,24,45,46,43,37,40,44,50,51,17,18,30,31,12,13,52]),import.meta.url),q=()=>o(()=>import("./ScreenshotsPage-DrfiqfWk.js"),__vite__mapDeps([53,3,1,4,5,6,7,8,9,10,50,45,38,22,20,21,23,39,46,51,17,18,30,31,12,13,54]),import.meta.url),x=[{path:"/",redirect:"/login"},{path:"/login",name:"login",component:I},{path:"/register",name:"register",component:S},{path:"/reset-password/:token",name:"reset_password",component:C},{path:"/social-bind-callback",name:"social_bind_callback",component:$},{path:"/api/verify-email/:token",name:"verify_email",component:E},{path:"/api/verify-bind-email/:token",name:"verify_bind_email",component:E},{path:"/app",component:B,children:[{path:"",redirect:"/app/accounts"},{path:"accounts",name:"accounts",component:N},{path:"schedules",name:"schedules",component:j},{path:"screenshots",name:"screenshots",component:q}]},{path:"/:pathMatch(.*)*",redirect:"/login"}],M=A({history:L(),routes:x});k(O).use(b()).use(M).mount("#app");
|
||||||
@@ -1 +1 @@
|
|||||||
import"./style-CEbARg1o.js";import{d as o}from"./vendor-vue-Da_zwKNU.js";import p from"./LoginPage-N6sdjwkY.js";import"./SocialLoginButtons-BaFXslgf.js";import"./base-C_0HtztH.js";import"./el-overlay-ckkTzDcK.js";import"./aria-DLpFpzDe.js";import"./http-BDcxFXLM.js";import"./vendor-axios-B9ygI19o.js";import"./index-D04QrwME.js";import"./auth-CuW_jyJD.js";o(p).mount("#app");
|
import"./style-CEbARg1o.js";import{d as o}from"./vendor-vue-Da_zwKNU.js";import p from"./LoginPage-B-9NNWX9.js";import"./SocialLoginButtons-BaFXslgf.js";import"./base-C_0HtztH.js";import"./el-overlay-ckkTzDcK.js";import"./aria-DLpFpzDe.js";import"./http-BDcxFXLM.js";import"./vendor-axios-B9ygI19o.js";import"./index-D04QrwME.js";import"./auth-CuW_jyJD.js";o(p).mount("#app");
|
||||||
@@ -1,16 +1,17 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="zh-CN">
|
<html lang="zh-CN">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||||
<title>知识管理平台</title>
|
<title>知识管理平台</title>
|
||||||
<script type="module" crossorigin src="./assets/app-D7SWy-KG.js"></script>
|
<script type="module" crossorigin src="./assets/app-BV_xMlg4.js"></script>
|
||||||
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
|
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
|
||||||
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-Da_zwKNU.js">
|
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-Da_zwKNU.js">
|
||||||
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
|
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
</body>
|
|
||||||
</html>
|
</body>
|
||||||
|
</html>
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="zh-CN">
|
<html lang="zh-CN">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
|
||||||
<title>知识管理平台</title>
|
<title>知识管理平台</title>
|
||||||
<script type="module" crossorigin src="./assets/login-C88J0b5r.js"></script>
|
<script type="module" crossorigin src="./assets/login-D0qy0-VA.js"></script>
|
||||||
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
|
<link rel="modulepreload" crossorigin href="./assets/style-CEbARg1o.js">
|
||||||
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-Da_zwKNU.js">
|
<link rel="modulepreload" crossorigin href="./assets/vendor-vue-Da_zwKNU.js">
|
||||||
<link rel="modulepreload" crossorigin href="./assets/base-C_0HtztH.js">
|
<link rel="modulepreload" crossorigin href="./assets/base-C_0HtztH.js">
|
||||||
@@ -15,15 +15,15 @@
|
|||||||
<link rel="modulepreload" crossorigin href="./assets/el-overlay-ckkTzDcK.js">
|
<link rel="modulepreload" crossorigin href="./assets/el-overlay-ckkTzDcK.js">
|
||||||
<link rel="modulepreload" crossorigin href="./assets/auth-CuW_jyJD.js">
|
<link rel="modulepreload" crossorigin href="./assets/auth-CuW_jyJD.js">
|
||||||
<link rel="modulepreload" crossorigin href="./assets/SocialLoginButtons-BaFXslgf.js">
|
<link rel="modulepreload" crossorigin href="./assets/SocialLoginButtons-BaFXslgf.js">
|
||||||
<link rel="modulepreload" crossorigin href="./assets/LoginPage-N6sdjwkY.js">
|
<link rel="modulepreload" crossorigin href="./assets/LoginPage-B-9NNWX9.js">
|
||||||
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
|
<link rel="stylesheet" crossorigin href="./assets/style-BHGuKLUF.css">
|
||||||
<link rel="stylesheet" crossorigin href="./assets/base-CiSqh4F9.css">
|
<link rel="stylesheet" crossorigin href="./assets/base-CiSqh4F9.css">
|
||||||
<link rel="stylesheet" crossorigin href="./assets/el-overlay-hkg5a9kt.css">
|
<link rel="stylesheet" crossorigin href="./assets/el-overlay-hkg5a9kt.css">
|
||||||
<link rel="stylesheet" crossorigin href="./assets/SocialLoginButtons-qO3SCoE7.css">
|
<link rel="stylesheet" crossorigin href="./assets/SocialLoginButtons-qO3SCoE7.css">
|
||||||
<link rel="stylesheet" crossorigin href="./assets/LoginPage-CSaMrhQm.css">
|
<link rel="stylesheet" crossorigin href="./assets/LoginPage-udDwyYMW.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
<noscript>该页面需要启用 JavaScript 才能使用。</noscript>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
</body>
|
|
||||||
</html>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user