This commit is contained in:
caozehui
2025-04-14 14:43:29 +08:00
parent ecec9adeea
commit 30b219e14d
7 changed files with 33 additions and 36 deletions

View File

@@ -80,7 +80,6 @@ const tabsStore = useTabsStore()
const keepAliveStore = useKeepAliveStore()
const dictStore = useDictStore()
const isAutoLogin = ref(false)
let publicKey: any = null;
@@ -105,31 +104,23 @@ const login = (formEl: FormInstance | undefined) => {
if (!valid) return
loading.value = true
try {
if (!isAutoLogin.value) {
let {data: publicKeyBase64}: { data: string } = await getPublicKey(loginForm.username, loginForm.checked)
//将base64格式的公钥转换为Forge可以使用的格式
const publicKeyDer = forge.util.decode64(publicKeyBase64);
publicKey = forge.pki.publicKeyFromPem(forge.pki.publicKeyToPem(forge.pki.publicKeyFromAsn1(forge.asn1.fromDer(publicKeyDer))));
}
let {data: publicKeyBase64}: { data: string } = await getPublicKey(loginForm.username)
//将base64格式的公钥转换为Forge可以使用的格式
const publicKeyDer = forge.util.decode64(publicKeyBase64);
publicKey = forge.pki.publicKeyFromPem(forge.pki.publicKeyToPem(forge.pki.publicKeyFromAsn1(forge.asn1.fromDer(publicKeyDer))));
// 1.执行登录接口
const {data} = await loginApi({
username: forge.util.encode64(loginForm.username),
password: isAutoLogin.value ? loginForm.password : encryptPassword(loginForm.password),
checked: loginForm.checked
password: encryptPassword(loginForm.password),
})
if (loginForm.checked) {
localStorage.setItem("loginInfo", JSON.stringify({
username: forge.util.encode64(loginForm.username),
password: isAutoLogin.value ? loginForm.password : encryptPassword(loginForm.password),
exp: Date.now() + 1000 * 60 * 60 * 24 * 30
}))
} else {
localStorage.removeItem("loginInfo")
}
userStore.setAccessToken(data.accessToken)
userStore.setRefreshToken(data.refreshToken)
userStore.setUserInfo(data.userInfo)
if(loginForm.checked){
// userStore.setExp(Date.now() + 1000 * 60 * 60 * 24 * 30)
userStore.setExp(Date.now() + 1000 * 10)
}
const response = await getDictList()
const dictData = response.data as unknown as Dict[]
await dictStore.initDictData(dictData)
@@ -179,20 +170,6 @@ const encryptPassword = (password: string) => {
return forge.util.encode64(encrypted);
}
onBeforeMount(async () => {
let loginInfoJSON = localStorage.getItem("loginInfo")
if (loginInfoJSON) {
const loginInfo = JSON.parse(loginInfoJSON)
if (loginInfo.exp < Date.now()) {
localStorage.removeItem("loginInfo")
} else {
isAutoLogin.value = true
loginForm.username = forge.util.decode64(loginInfo.username)
loginForm.password = loginInfo.password
loginForm.checked = true
}
}
})
</script>
<style scoped lang='scss'>