前端 SSO 单点登录问题,页面跳转并登录成功后获取token信息?

新手上路,请多包涵

前端使用 umi 框架,需要将写好的用户页面接入到公司的 SSO 系统,因此我需要在访问用户页面时,判断本地是否有token,若没有,则跳转到SSO登录页面。请问跳转功能我是用GET请求实现,还是直接 window.location.href = 'https://sso域名/login?redirectURL=xxx'。用GET请求实现有跨域的错误:No 'Access-Control-Allow-Origin' header。 用window.location.href 可直接实现跳转登录页面,但是登录成功后,在响应头部的token信息我如何获取呢?

阅读 4.8k
2 个回答
✓ 已被采纳

最简单的一个方式,还是通过url带过来:
比如当前服务时 https://a.b.com,登录时,需跳转sso服务:https://sso域名/login?redirectURL=https://a.b.com
sso这里拿到token后,重定向时,带上即可:https://a.b.com?token={token}

  • 跳转可以使用 window.open(...),好处是可以在当前页面打开,也可以打开新页面(新页面还能拿到当前页面的引用)。你说的 getajaxajax 一般用来请求数据的;
  • sso 页面登录成功后,有几种方式传递 token,选择合适的即可

    • 如果是同一个父级域名(比如当前 a.yourdomain.com, sso 是 sso.yourdomain.com),可以用:cookie,localstorage, 放在 yourdomain.com 下面
    • 跳转走参数,如 a.yourdomain.com?redirect=xxx&token=xxx, xxx&token=xxx 需要编码
    • 页面消息,window.postMessage(token)
    • 直接调用,opener.xxx(token)
推荐问题