作者:微信小助手
发布时间:2022-09-28T11:57:40
最近做项目的时候,涉及到一个单点登录,即是项目的登录页面,用的是公司共用的一个登录页面,在该页面统一处理逻辑。最终实现用户只需登录一次,就可以以登录状态访问公司旗下的所有网站。 单点登录( Single Sign On ,简称 SSO),是目前比较流行的企业业务整合的解决方案之一,用于多个应用系统间,用户只需要登录一次就可以访问所有相互信任的应用系统。 其中本文讲的是在登录后如何管理前言
 
  
 access_token和refresh_token,主要就是封装 axios拦截器,在此记录。需求
 
  
 
 
  
http://xxxx.project.com/profile需要登录,未登录就跳转至SSO登录平台,此时的登录网址 url为
    http://xxxxx.com/login?app_id=project_name_id&redirect_url=http://xxxx.project.com/profile,其中
    app_id是后台那边约定定义好的,
    redirect_url是成功授权后指定的回调地址。
   ?code=XXXXX,即是
    http://xxxx.project.com/profile?code=XXXXXX,code的值是使用一次后即无效,且10分钟内过期
   /access_token/authenticate,携带参数
    { verify_code: code },并且该api已经自带
    app_id和
    app_secret两个固定值参数,通过它去请求授权的api,请求成功后得到返回值
    { access_token: "xxxxxxx", refresh_token: "xxxxxxxx", expires_in: xxxxxxxx },存下
    access_token和
    refresh_token到cookie中(localStorage也可以),此时用户就算登录成功了。
   access_token为标准JWT格式,是授权令牌,可以理解就是验证用户身份的,是应用在调用api访问和修改用户数据必须传入的参数(放在请求头headers里),2小时后过期。也就是说,做完前三步后,你可以调用需要用户登录才能使用的api;但是假如你什么都不操作,静静过去两个小时后,再去请求这些api,就会报
    access_token过期,调用失败。