const tokenKey = "Authorization"; const loginTypeKey = "loginType"; export default { /** * 单点登录跳转 * @param app 应用 */ ssoJump: (app: any, toMenu: boolean) => { let prefix = `${app.appUrl}`; if (toMenu) { let menuPath = app.appMenu.path; let urlItems = prefix.split("/"); urlItems.pop(); let appPrefix = urlItems.join("/"); prefix = appPrefix + menuPath; } let url = `${prefix}?${tokenKey}=${localStorage.getItem( "token" )}&${loginTypeKey}=plat`; window.open(url); }, /** * 单点登录解码 * @param beforeChangeHref 解码完成,更新地址栏前的回调 */ ssoDecode: (beforeChangeHref?: any) => { function getQueryVariable(variable: string) { const query = window.location.search.substring(1); const vars = query.split("&"); for (let i = 0; i < vars.length; i++) { const pair = vars[i].split("="); if (pair[0] == variable) { return pair[1]; } } return false; } let token = getQueryVariable(tokenKey); if (token && token != "false") { const loginType = getQueryVariable(loginTypeKey); const menuCodes = getQueryVariable("menuCodes"); const href = window.location.href; token = decodeURIComponent(token); localStorage.setItem("sso_token", token); localStorage.setItem("sso_login_type", loginType); localStorage.setItem("sso_menu_codes", menuCodes); const newUrl = window.location.href.substring(0, href.indexOf("?")); beforeChangeHref({ [tokenKey]: token, [loginTypeKey]: loginType, }); window.location.href = newUrl; } }, };