码迷,mamicode.com
首页 > 其他好文 > 详细

用户登录token存储

时间:2020-07-27 13:47:24      阅读:540      评论:0      收藏:0      [点我收藏+]

标签:disable   storage   span   ring   default   gif   sea   else   def   

const axios = window.axios // eslint-disable-line

let QueryString
export default {
  getToken,
  getUrlToken,
  getRole
}
/**
 * 将URL中的参数变成对象,存储在QueryString中,如果有token,则将token返回.
 * @returns {*}
 */
function getUrlToken () {
  let QueryString = {}
  let search = window.location.search
  if (search) {
    search = search.substring(1)
    let a = search.split(‘&‘)
    for (let i = 0; i < a.length; i++) {
      var as = a[i].split(‘=‘)
      if (as.length > 1) {
        QueryString[as[0]] = as[1]
      }
    }
  }
  return QueryString
}
/**
 * 获取用户角色信息
 */
function getRole () {
  return new Promise((resolve, reject)=> {
    axios.get(‘who?‘ + ‘corpid=‘ + QueryString.corpid + ‘&code=‘ + QueryString.code + ‘&noCache=‘ + (new Date().getTime()))
    .then((res) => {
      if (res && res.data) {
        resolve(res.data)
      }
      else {
        reject({
          message: ‘获取用户角色失败‘
        })
      }
    }, (res) => {
      reject({
        message: ‘获取用户角色失败‘
      })
    })
  })
}
 
 
 
/**
 * 获取用户token,先拿url中的,然后再从微信中获取
 * isLogin: 登陆模式,这时只有host没有token
 */
function getToken (isLogin) {
  return new Promise((resolve, reject)=> {
    QueryString = getUrlToken()
    if (QueryString.token) {  // 如果有token,则该token存在url中或者微信获取后保存的
      window.sessionStorage.setItem(‘querystring‘, JSON.stringify(QueryString))
      resolve(QueryString)
    }
    else if (QueryString.host && isLogin) {
      window.sessionStorage.setItem(‘querystring‘, JSON.stringify(QueryString))
      resolve(QueryString)
    }
    else if (QueryString.corpid && QueryString.code) {  // 从微信中获取
      axios.get(‘/qyapi/who?‘ + ‘corpid=‘ + QueryString.corpid + ‘&code=‘ + QueryString.code + ‘&noCache=‘ + (new Date().getTime()))
      .then((res) => {
        if (res && res.data && res.data.token && res.data.apiServer) {
          res.data.host = res.data.apiServer
          QueryString = res.data
          window.sessionStorage.setItem(‘querystring‘, QueryString)
          resolve(res.data)
        }
        else {
          reject({
            message: ‘你未获得授权,请联系管理员‘
          })
        }
      })
      .catch(() => {
        reject({
          message: ‘连接认证服务器失败,请稍后重试‘
        })
      })
    }
    else {   // 如果URL上没有参数,从sessionStorage取初次进入app的参数。如果也没有,则表示是第一次进入app就没有带必要的参数
      let querystring = window.sessionStorage.getItem(‘querystring‘)
      try {
        querystring = JSON.parse(querystring)
        if (querystring && querystring.token) {
          resolve(querystring)
        }
        else {
          reject({
            message: ‘访问地址缺少必要参数‘
          })
        }
      }
      catch (e) {
        reject({
          message: ‘访问地址缺少必要参数‘
        })
      }
    }
  })
}

用户登录token存储

标签:disable   storage   span   ring   default   gif   sea   else   def   

原文地址:https://www.cnblogs.com/kittyjingjing/p/13384289.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!