Blame view

ant-design-vue-base/src/cas/sso.js 1.78 KB
1a2d344e   wxy   初始化项目
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
  import Vue from 'vue'
  import { ACCESS_TOKEN } from "@/store/mutation-types"
  import store from '@/store'
  /**
   * 单点登录
   */
  const init = (callback) => {
    if (process.env.VUE_APP_SSO == 'true') {
      console.log("-------单点登录开始-------");
      let token = Vue.ls.get(ACCESS_TOKEN);
      let st = getUrlParam("ticket");
      let sevice = "http://" + window.location.host + "/";
      if (token) {
        loginSuccess(callback);
      } else {
        if (st) {
          validateSt(st, sevice, callback);
        } else {
          let serviceUrl = encodeURIComponent(sevice);
          window.location.href = window._CONFIG['casPrefixUrl'] + "/login?service=" + serviceUrl;
        }
      }
      console.log("-------单点登录结束-------");
    }else{
      callback && callback()
    }
  };
  const SSO = {
    init: init
  };
  
  function getUrlParam(paraName) {
    let url = document.location.toString();
    let arrObj = url.split("?");
  
    if (arrObj.length > 1) {
      let arrPara = arrObj[1].split("&");
      let arr;
  
      for (let i = 0; i < arrPara.length; i++) {
        arr = arrPara[i].split("=");
  
        if (arr != null && arr[0] == paraName) {
          return arr[1];
        }
      }
      return "";
    }
    else {
      return "";
    }
  }
  
  function validateSt(ticket,service,callback){
    let params = {
      ticket: ticket,
      service:service
    };
    store.dispatch('ValidateLogin',params).then(res => {
      //this.departConfirm(res)
      if(res.success){
        loginSuccess(callback);
      }else{
        let sevice = "http://"+window.location.host+"/";
        let serviceUrl = encodeURIComponent(sevice);
        window.location.href = window._CONFIG['casPrefixUrl']+"/login?service="+serviceUrl;
      }
    }).catch((err) => {
      console.log(err);
      //that.requestFailed(err);
    });
  }
  
  function loginSuccess (callback) {
    callback();
  }
  export default SSO;