微信强制清缓存和授权登录,vue框架beforeEach

此方法比较傻瓜,微信浏览器index.html, 可以再路由钩子beforeEach,登录前做登录获取服务器index.html是否更新,判断,然后在url加上时间戳然后再跳转回来一次
...
import  store  from  ' ./vuex/store '
import  cookie  from  ' ./libs/cookie '

// 路由预先判断
router . beforeEach( ( to ,  from ,  next )  =>  {
  // 首先判断是否已有用户登录信息userInfo
  if ( store . state . user . info{
     next()
   }  else  {
    // 强制给index.html 加上时间戳
     if ( document . URL . indexOf( ' index.html?t= '<  0{
       let  timestamp  = ( new  Date()) . valueOf()
       window . location . href  =  ' /index.html?t= '  +  timestamp  +  ' # '  +  to . fullPath
     }
     let  ua  =  window . navigator . userAgent . toLowerCase()
    // 判断微信客户端
     if ( ua . indexOf( ' micromessenger '>  1{
      // 首先获取授权cookie authid
       let  authid  =  cookie . get( ' authid ')
       if ( authid{
         Vue . http . post( ' /index.php/weixin/Auth/auth ' ,  { authid :  authid }) . then( ( response )  =>  {
           let  res  =  response . data
           if ( res . code  ===  ' 04 '{
             cookie . del( ' authid ')
             window . location . href  =  ' 404.html '
           }  else  if ( res . code  ===  ' 01 '{
             store . dispatch( ' setUserInfo ' ,  res . userInfo)
             next()
           }
         },  ( response )  =>  {})
       }  else  {
        // 强制跳转,授权登录,并设置cookie
         window . location . href  =  ' /index.php/weixin/Auth/redirect?redirect= '  +  encodeURIComponent( document . URL)
       }
     }  else  {
      //  非微信客户端
       Vue . http . post( ' /index.php/weixin/Auth/auth ' ,  {openid :  cookie . get( ' openid ') }) . then( ( response )  =>  {
         let  res  =  response . data
         if ( res . code  ===  ' 04 '{
           cookie . del( ' authid ')
           next()
           // window.location.href = '/index.php/weixin/Auth/redirect?redirect=' + encodeURIComponent(document.URL)
         }  else  if ( res . code  ===  ' 01 '{
           store . dispatch( ' setUserInfo ' ,  res . userInfo)
           next()
         }
       },  ( response )  =>  {})
     }
   }
})

你可能感兴趣的:(vue,微信)