// @/utils/sso.js
|
/**
|
* 解析SSO链接参数
|
* @param {string} url 完整URL
|
* @returns {object} 解析后的参数
|
*/
|
export const parseSSOUrl = (url) => {
|
try {
|
const urlObj = new URL(url)
|
const params = {}
|
|
urlObj.searchParams.forEach((value, key) => {
|
params[key] = decodeURIComponent(value)
|
})
|
|
// 提取页面路径
|
const path = urlObj.pathname.replace(/\//g, '')
|
if (path) {
|
params._page = path
|
}
|
|
return params
|
} catch (e) {
|
console.error('解析SSO URL失败:', e)
|
return {}
|
}
|
}
|
|
/**
|
* 构建SSO登录链接
|
* @param {string} baseUrl 基础URL
|
* @param {string} userName 用户名
|
* @param {string} passWord 密码
|
* @param {string} targetPage 目标页面
|
* @param {object} pageParams 页面参数
|
* @returns {string} SSO链接
|
*/
|
export const buildSSOUrl = (baseUrl, userName, passWord, targetPage, pageParams = {}) => {
|
const params = new URLSearchParams()
|
params.append('userName', userName)
|
params.append('passWord', passWord)
|
|
if (targetPage) {
|
params.append('redirect', encodeURIComponent(targetPage))
|
}
|
|
// 添加页面参数
|
Object.keys(pageParams).forEach(key => {
|
params.append(key, pageParams[key])
|
})
|
|
return `${baseUrl}/pages/login/Login?${params.toString()}`
|
}
|