什么是单点登录 什么是单点登录(SSO) - 知乎

单点登录的英文名叫做:Single Sign On(简称SSO)。

初学/以前的时候,一般我们就单系统,所有的功能都在同一个系统上。

后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。

...

我需要从浏览器中获取所有的cookie - 问答 - 腾讯云开发者社区-腾讯云  从浏览器中获取所有的cookie

cookie获取不到浏览器中所有的cookie值的问题 cookie获取不到浏览器中所有的cookie值的问题_ZhouMin8877的博客-CSDN博客

获取浏览器Cookie的值通过document.cookie 来查找cookie值const cookie = name => `; ${document.cookie}`.split(`; ${name}=`).pop().split(';').shift();
    
cookie('_ga');
// Result: "GA1.2.1929736587.1601974046"

 

如果浏览器中 cookie的,domain 不是当前环境的值,就无法用 document.cookie 拿到这个cookie (因为存在跨域,ip也不行)
而且必须只能是同域名下面

获取浏览器里所有的cookie  https://blog.csdn.net/boylufeng/article/details/44088575
document.cookie (F12 直接打印出来看)
iPlanetDirectoryPro1=C8iTptTY1dkK3elnHu6jt2N84BdztfNGU5HnwzTXb-7OYngegMZBxFC1R5EpeDj7N19v4wk1MKc3MF0USrYV3FUY4hJ3_yCaNfQpjSdw_lTyNz_u2grt8NleBnNEgAI0; LtpaToken=AAECAzYwNjZDNUVBNjA2NkZFMkFDTj0Ty9UTveAvT1U9U0dTL089R01DQ4/PNPmmpJAL0sDqXsmZAFl7ZXZZ; iPlanetDirectoryPro=C8iTptTY1dkK3elnHu6jt2N84BdztfNGU5HnwzTXb-7OYngegMZBxFC1R5EpeDj7N19v4wk1MKc3MF0USrYV3FUY4hJ3_yCaNfQpjSdw_lTyNz_u2grt8NleBnNEgAI0; rememberme_username=suxxx;
Admin-Token=9b1bd4fc5fd679f9036d06d024e4280c

此时浏览器cookie里面就有所有的本域名下的cookie了 直接取就行

@/utils/auth.js
export function getTokenSingleweb() { //获取单点登录接口
  return Cookies.get('iPlanetDirectoryPro') //key名字
}

代码:单点登录只在登录页面判断就行 没必要在router.beforeEach里面

import { singlewebToken } from "@/utils/auth"; // get token from cookie

  mounted() {
    // const singlewebToken = singlewebToken();
    const singlewebToken2 =
      "C8iTptTY1dkK3elnHu6jt2N84BdztfNGU5HnwzTXb-7OYngegMZBxFC1R5EpeDj7PTSSLiQjrG7ohrX_ssbrKVxELDowGJRDWtTLIX - p7LWeUqc0ugg3zGoEBSt4okFB"; //singlewebToken
    if (singlewebToken2) {
      this.handleSso(singlewebToken2);
    }
  },

methods: {
    //判断单点登录的接口
    handleSso(params) {
      let _this = this;
      axios({
        method: "post",
        url: window.global_url.Base_url + "/sys/sso",
        params: {
          ...params,
        },
      })
        .then((response) => {
          if (response.data.code == 200) {
            const { roles, token, expire, username, userId } = response.data;
            if (!roles || roles.length <= 0) {
              reject("roles must be a non-null array!");
            }
            store.commit("user/SET_TOKEN", token);
            store.commit("user/expire", expire);
            store.commit("user/SET_NAME", username);
            store.commit("user/userId", userId);
            store.commit("SET_ROLES", roles);
            window.localStorage.setItem("userId", JSON.stringify(userId));
            window.localStorage.setItem("username", JSON.stringify(username));
            setToken(token, expire);
            _this.$router.push({ path: _this.redirect || "/" });
          }
          if (response.data.msg == "单点登陆Token过期,请重新登陆") {
            this.$router.push("/login");//普通跳转就行
          }
        })
        .catch((error) => {
          if (error.response.msg == "单点登陆Token过期,请重新登陆") {
            router.replace({
              path: "/login",
              query: {
                redirect: router.currentRoute.fullPath,
              },
            });
          }
        });
    },
}

Logo

前往低代码交流专区

更多推荐