WXL
9 小时以前 b7b8202e3ecb7f720eefd7a226b2ee8166fc5057
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// @/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()}`
}