fix: bbs与ai存储refreshToken

This commit is contained in:
Gsh
2025-06-29 00:57:57 +08:00
parent 03de576d8c
commit 39eb4bef07
7 changed files with 151 additions and 81 deletions

View File

@@ -1,21 +1,18 @@
import { ElMessage, ElMessageBox } from "element-plus";
import {ElMessage, ElMessageBox} from "element-plus";
import useUserStore from "@/stores/user";
import router from "@/router";
import { Session, Local } from "@/utils/storage";
import{computed} from 'vue'
import {
userLogin,
getUserDetailInfo,
userLogout,
userRegister, userRetrievePassword,
} from "@/apis/auth";
import {Local, Session} from "@/utils/storage";
import {computed} from 'vue'
import {getUserDetailInfo, userLogin, userLogout, userRegister, userRetrievePassword,} from "@/apis/auth";
const TokenKey = "AccessToken";
const RefreshTokenKey = "RefreshToken";
export const AUTH_MENUS = "AUTH_MENUS";
export const AUTH_USER = "AUTH_USER";
export default function useAuths(opt) {
const defaultOpt = {
@@ -35,6 +32,10 @@ export default function useAuths(opt) {
var token= Local.get(TokenKey);
return token;
};
// 获取token
const getRefreshToken = () => {
return Local.get(RefreshTokenKey);
};
const isLogin=computed(()=>{
return getToken()? true : false
@@ -42,7 +43,7 @@ const isLogin=computed(()=>{
const currentUserInfo=computed(()=>{
return useUserStore();
});
});
// 存储token到cookies
const setToken = (token) => {
@@ -50,7 +51,16 @@ const currentUserInfo=computed(()=>{
return false;
}
Local.set(TokenKey, token);
return true;
};
// 存储RefreshToken到cookies
const setRefreshToken = (token) => {
if (token == null) {
return false;
}
Local.set(RefreshTokenKey, token);
return true;
};
@@ -141,9 +151,10 @@ const currentUserInfo=computed(()=>{
// 登录成功之后的操作
const loginSuccess = async (res) => {
const { token } = res.data;
const { token,refreshToken } = res.data;
setToken(token);
setRefreshToken(refreshToken);
useUserStore().updateToken(token);
try {
// 存储用户信息
@@ -195,10 +206,12 @@ const currentUserInfo=computed(()=>{
// console.log(error);
// }
};
return {
getToken,
getRefreshToken,
setToken,
setRefreshToken,
removeToken,
loginFun,
getUserInfo,

View File

@@ -6,12 +6,13 @@ import "nprogress/nprogress.css";
import useUserStore from "@/stores/user";
NProgress.configure({ showSpinner: false });
const { getToken, logoutFun } = useAuths();
const { getToken, logoutFun ,getRefreshToken} = useAuths();
const whiteList = ["/login", "/auth-redirect", "/bind", "/register"];
router.beforeEach((to, from, next) => {
NProgress.start();
const hasToken = getToken();
const refreshToken = getRefreshToken();
if (to.path === "/login" || to.path === "/index") {
const urlParams = new URLSearchParams(window.location.search);
const isPopup = window.opener && window.opener !== window;
@@ -24,7 +25,8 @@ router.beforeEach((to, from, next) => {
const targetOrigin = new URL(decodeURIComponent(redirectUri)).origin;
window.opener.postMessage({
type: 'SSO_LOGIN_SUCCESS',
token: hasToken
token: hasToken,
refreshToken: refreshToken,
}, targetOrigin);
// 立即关闭窗口
setTimeout(() => window.close(), 100);