改进登录

This commit is contained in:
ivamp 2024-08-06 03:14:56 +08:00
parent e7ed1dbe1d
commit 54bef3d8e5
2 changed files with 41 additions and 27 deletions

View File

@ -9,36 +9,47 @@ import axios from "axios";
import { useUserStore } from "@/stores/user"; import { useUserStore } from "@/stores/user";
import router from "@/router"; import router from "@/router";
import config from "@/config/config"; import config from "@/config/config";
import { useChatStore } from "@/stores/chat";
const userStore = useUserStore(); const userStore = useUserStore();
const chatStore = useChatStore();
const discovery = await axios.get(config.oauth_discovery_url); axios.get(config.oauth_discovery_url).then((discovery) => {
const localCodeVerifier = localStorage.getItem(config.oauth_storage_key);
const localCodeVerifier = localStorage.getItem(config.oauth_storage_key); // code
const code = new URLSearchParams(window.location.search).get("code");
// code const q = new URLSearchParams({
const code = new URLSearchParams(window.location.search).get("code");
const q = new URLSearchParams({
client_id: config.oauth_client_id, client_id: config.oauth_client_id,
grant_type: "authorization_code", grant_type: "authorization_code",
redirect_uri: config.oauth_callback_url, redirect_uri: config.oauth_callback_url,
code_verifier: localCodeVerifier || "", code_verifier: localCodeVerifier || "",
code: code || "", code: code || "",
}); });
const tokenEndpoint = discovery.data.token_endpoint; const tokenEndpoint = discovery.data.token_endpoint;
const r = await axios.post(tokenEndpoint, q); axios
.post(tokenEndpoint, q)
.then((r) => {
userStore.access_token = r.data.access_token;
userStore.refresh_token = r.data.refresh_token;
userStore.access_token = r.data.access_token; userStore.login(
userStore.refresh_token = r.data.refresh_token;
userStore.login(
r.data.id_token, r.data.id_token,
r.data.access_token, r.data.access_token,
r.data.refresh_token, r.data.refresh_token,
r.data.expires_in, r.data.expires_in,
); );
// / chatStore.getChats();
router.push("/"); })
.catch((e) => {
console.log(e);
alert("登录失败");
})
.finally(() => {
// /
router.push("/");
});
});
</script> </script>

View File

@ -49,5 +49,8 @@ const query = new URLSearchParams({
code_challenge_method: "S256", code_challenge_method: "S256",
}).toString(); }).toString();
window.location.href = discovery.data.authorization_endpoint + "?" + query; // a
const a = document.createElement("a");
a.href = discovery.data.authorization_endpoint + "?" + query;
a.click();
</script> </script>