sso.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import Vue from 'vue'
  2. import { ACCESS_TOKEN } from "@/store/mutation-types"
  3. import store from '@/store'
  4. /**
  5. * 单点登录
  6. */
  7. const init = (callback) => {
  8. if (process.env.VUE_APP_SSO == 'true') {
  9. console.log("-------单点登录开始-------");
  10. let token = Vue.ls.get(ACCESS_TOKEN);
  11. let st = getUrlParam("ticket");
  12. let sevice = "http://" + window.location.host + "/";
  13. if (token) {
  14. loginSuccess(callback);
  15. } else {
  16. if (st) {
  17. validateSt(st, sevice, callback);
  18. } else {
  19. let serviceUrl = encodeURIComponent(sevice);
  20. window.location.href = window._CONFIG['casPrefixUrl'] + "/login?service=" + serviceUrl;
  21. }
  22. }
  23. console.log("-------单点登录结束-------");
  24. }else{
  25. callback && callback()
  26. }
  27. };
  28. const SSO = {
  29. init: init
  30. };
  31. function getUrlParam(paraName) {
  32. let url = document.location.toString();
  33. let arrObj = url.split("?");
  34. if (arrObj.length > 1) {
  35. let arrPara = arrObj[1].split("&");
  36. let arr;
  37. for (let i = 0; i < arrPara.length; i++) {
  38. arr = arrPara[i].split("=");
  39. if (arr != null && arr[0] == paraName) {
  40. return arr[1];
  41. }
  42. }
  43. return "";
  44. }
  45. else {
  46. return "";
  47. }
  48. }
  49. function validateSt(ticket,service,callback){
  50. let params = {
  51. ticket: ticket,
  52. service:service
  53. };
  54. store.dispatch('ValidateLogin',params).then(res => {
  55. //this.departConfirm(res)
  56. if(res.success){
  57. loginSuccess(callback);
  58. }else{
  59. let sevice = "http://"+window.location.host+"/";
  60. let serviceUrl = encodeURIComponent(sevice);
  61. window.location.href = window._CONFIG['casPrefixUrl']+"/login?service="+serviceUrl;
  62. }
  63. }).catch((err) => {
  64. console.log(err);
  65. //that.requestFailed(err);
  66. });
  67. }
  68. function loginSuccess (callback) {
  69. callback();
  70. }
  71. export default SSO;