最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于vue 實(shí)現(xiàn)token驗(yàn)證的實(shí)例代碼

 更新時(shí)間:2017年12月14日 10:40:02   作者:_Construct  
這篇文章主要介紹了基于vue 實(shí)現(xiàn)token驗(yàn)證的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下

vue-koa2-token

基于vue的 做了token驗(yàn)證

前端部分(對(duì)axios設(shè)置Authorization)

import axios from 'axios'
import store from '../store'
import router from '../router'
//設(shè)置全局axios默認(rèn)值
axios.defaults.timeout = 6000; //6000的超時(shí)驗(yàn)證
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
//創(chuàng)建一個(gè)axios實(shí)例
const instance = axios.create();
instance.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';
axios.interceptors.request.use = instance.interceptors.request.use;
//request攔截器
instance.interceptors.request.use(
  config => {
    //每次發(fā)送請(qǐng)求之前檢測(cè)都vuex存有token,那么都要放在請(qǐng)求頭發(fā)送給服務(wù)器
    if(store.state.token){
      config.headers.Authorization = `token ${store.state.token}`;
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  }
);
//respone攔截器
instance.interceptors.response.use(
  response => {
    return response;
  },
  error => { //默認(rèn)除了2XX之外的都是錯(cuò)誤的,就會(huì)走這里
    if(error.response){
      switch(error.response.status){
        case 401:
          store.dispatch('UserLogout'); //可能是token過(guò)期,清除它
          router.replace({ //跳轉(zhuǎn)到登錄頁(yè)面
            path: 'login',
            query: { redirect: router.currentRoute.fullPath } // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由
          });
      }
    }
    return Promise.reject(error.response);
  }
);
export default instance;

 然后在路由文件中

 //注冊(cè)全局鉤子用來(lái)攔截導(dǎo)航
router.beforeEach((to, from, next) => {
 //獲取store里面的token
 let token = store.state.token;
 //判斷要去的路由有沒(méi)有requiresAuth
 if(to.meta.requiresAuth){
  if(token){
   next();
  }else{
   next({
    path: '/login',
    query: { redirect: to.fullPath } // 將剛剛要去的路由path(卻無(wú)權(quán)限)作為參數(shù),方便登錄成功后直接跳轉(zhuǎn)到該路由
   });
  }
 }else{
  next();//如果無(wú)需token,那么隨它去吧
 }
});

后端(node) 我們封裝了一個(gè)中間件 在需要驗(yàn)證token的路由,加上這個(gè)中間件

 router.get('/dosh',checkToken,User.dosh)
const jwt = require('jsonwebtoken');

1、使用jsonwebtoken 創(chuàng)建token

const jwt = require('jsonwebtoken');
//登錄時(shí):核對(duì)用戶(hù)名和密碼成功后,應(yīng)用將用戶(hù)的id(圖中的user_id)作為JWT Payload的一個(gè)屬性
module.exports = function(user_id){
  const token = jwt.sign({
    user_id: user_id
  }, 'sinner77', {
    expiresIn: '3600s' //過(guò)期時(shí)間設(shè)置為60妙。那么decode這個(gè)token的時(shí)候得到的過(guò)期時(shí)間為 : 創(chuàng)建token的時(shí)間 + 設(shè)置的值
  });
  return token;
};

2、對(duì)于前端的請(qǐng)求,校驗(yàn)接口

//檢查token是否過(guò)期
module.exports = async ( ctx, next ) => {
  if(ctx.request.header['authorization']){
    let token = ctx.request.header['authorization'].split(' ')[1];
    //解碼token
    let decoded = jwt.decode(token, 'sinner77');
    //console.log(decoded);的輸出 :{ user_id: '123123123', iat: 1494405235, exp: 1494405235 }
    if(token && decoded.exp <= new Date()/1000){
      ctx.status = 401;
      ctx.body = {
        message: 'token過(guò)期'
      };
    }else{
      //如果權(quán)限沒(méi)問(wèn)題,那么交個(gè)下一個(gè)控制器處理
      return next();
    }
  }else{
    ctx.status = 401;
    ctx.body = {
      message: '沒(méi)有token'
    }
  }
};

代碼托管github 歡迎star

https://github.com/yxl720/vue-koa2-token

總結(jié)

以上所述是小編給大家介紹的基于vue 實(shí)現(xiàn)token驗(yàn)證的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue響應(yīng)式原理Observer、Dep、Watcher理解

    Vue響應(yīng)式原理Observer、Dep、Watcher理解

    這篇文章主要介紹了Vue響應(yīng)式原理-理解Observer、Dep、Watcher,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Vue動(dòng)態(tài)樣式方法實(shí)例總結(jié)

    Vue動(dòng)態(tài)樣式方法實(shí)例總結(jié)

    在vue項(xiàng)目中,很多場(chǎng)景要求我們動(dòng)態(tài)改變?cè)氐臉邮?下面這篇文章主要給大家介紹了關(guān)于Vue動(dòng)態(tài)樣式方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Vue實(shí)現(xiàn)簡(jiǎn)單跑馬燈特效

    Vue實(shí)現(xiàn)簡(jiǎn)單跑馬燈特效

    這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)簡(jiǎn)單跑馬燈特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • VUE table表格動(dòng)態(tài)添加一列數(shù)據(jù),新增的這些數(shù)據(jù)不可以編輯(v-model綁定的數(shù)據(jù)不能實(shí)時(shí)更新)

    VUE table表格動(dòng)態(tài)添加一列數(shù)據(jù),新增的這些數(shù)據(jù)不可以編輯(v-model綁定的數(shù)據(jù)不能實(shí)時(shí)更新)

    這篇文章主要介紹了VUE table表格動(dòng)態(tài)添加一列數(shù)據(jù),新增的這些數(shù)據(jù)不可以編輯(v-model綁定的數(shù)據(jù)不能實(shí)時(shí)更新),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2020-04-04
  • Vue判斷數(shù)組內(nèi)是否存在某一項(xiàng)的兩種方法

    Vue判斷數(shù)組內(nèi)是否存在某一項(xiàng)的兩種方法

    這篇文章主要介紹了Vue判斷數(shù)組內(nèi)是否存在某一項(xiàng),今天給大家分享兩種方法,分別是findIndex()和 indexOf()方法,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Element UI表單組件進(jìn)行通信的代碼詳解

    Element UI表單組件進(jìn)行通信的代碼詳解

    Element UI是一個(gè)為Vue.js開(kāi)發(fā)的優(yōu)秀 UI 組件庫(kù),它提供了豐富的組件,包括表單組件,Element UI的表單組件可以幫助開(kāi)發(fā)者快速構(gòu)建和管理表單,提高開(kāi)發(fā)效率,在實(shí)際開(kāi)發(fā)中,我們經(jīng)常需要在表單組件之間進(jìn)行通信,本文將詳細(xì)介紹Element UI表單組件如何進(jìn)行通信
    2025-02-02
  • Vue Router應(yīng)用方法詳解

    Vue Router應(yīng)用方法詳解

    在看這篇文章的幾點(diǎn)要求:需要你先知道Vue-Router是個(gè)什么東西,用來(lái)解決什么問(wèn)題,以及它的基本使用。如果你還不懂的話(huà),建議上官網(wǎng)了解下Vue-Router的基本使用后再回來(lái)看這篇文章
    2022-09-09
  • Element+Vue實(shí)現(xiàn)動(dòng)態(tài)表單多個(gè)下拉框組件功能

    Element+Vue實(shí)現(xiàn)動(dòng)態(tài)表單多個(gè)下拉框組件功能

    這篇文章主要介紹了Element+Vue實(shí)現(xiàn)動(dòng)態(tài)表單多個(gè)下拉框組件功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • vue嵌套路由與404重定向?qū)崿F(xiàn)方法分析

    vue嵌套路由與404重定向?qū)崿F(xiàn)方法分析

    這篇文章主要介紹了vue嵌套路由與404重定向?qū)崿F(xiàn)方法,結(jié)合實(shí)例形式分析了vue.js嵌套路由與404重定向的概念、原理、實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • VSCode使用之Vue工程配置eslint

    VSCode使用之Vue工程配置eslint

    這篇文章主要介紹了VSCode使用之Vue工程配置eslint,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-04-04

最新評(píng)論

宁蒗| 大荔县| 历史| 辽宁省| 衡南县| 工布江达县| 平塘县| 蚌埠市| 平乐县| 北京市| 教育| 兴隆县| 恩平市| 镇康县| 灵台县| 印江| 陇川县| 三穗县| 荆州市| 依兰县| 思茅市| 宜丰县| 梅河口市| 桐柏县| 武宣县| 石门县| 台山市| 巴林左旗| 环江| 甘肃省| 兴隆县| 平舆县| 吴忠市| 集安市| 遂宁市| 两当县| 罗江县| 民乐县| 井陉县| 正阳县| 民县|