sso.js 1.7 KB

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