成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前后端分離之JWT(JSON Web Token)的使用

caohaoyu / 3295人閱讀

摘要:前言由于自己開發(fā)的項(xiàng)目中用到了技術(shù),前端采用了框架,后端采用了框架,故作此文幫助使用相同技術(shù)棧的朋友們。具體思路如下把后端生成的存入,然后前端切換路由刷新頁面的時候,通過請求的時候帶上這個,提交給后端判斷當(dāng)前的是否有效,后端返回結(jié)果。

前言

由于自己開發(fā)的項(xiàng)目中用到了 JWT 技術(shù),前端采用了 Vue.js 框架,后端采用了 CodeIgniter 框架,故作此文幫助使用相同技術(shù)棧的朋友們。

具體思路如下:
把后端生成的 JWT token 存入 localStorage,然后前端切換路由(刷新頁面)的時候,通過 Ajax 請求的時候帶上這個 token,提交給后端判斷當(dāng)前的 token 是否有效,后端返回結(jié)果。

JWT 用處很多,可以用于后臺權(quán)限的限制、接口安全性校驗(yàn)。

使用教程 前端 Vue.js vue-router

登錄時,將后端返回的 token 存入 localStorage

使用 Vue-Router 判斷是否存在 token,不存在跳轉(zhuǎn)至登錄

// JWT 用戶權(quán)限校驗(yàn),判斷 TOKEN 是否在 localStorage 當(dāng)中
router.beforeEach(({name}, from, next) => {
  // 獲取 JWT Token
  if (localStorage.getItem("JWT_TOKEN")) {
    // 如果用戶在login頁面
    if (name === "login") {
      next("/");
    } else {
      next();
    }
  } else {
    if (name === "login") {
      next();
    } else {
      next({name: "login"});
    }
  }
});
axios

axios 全局配置攔截器
每次向后端請求攜帶 頭信息

src/main.js 當(dāng)中加上以下代碼:

// http request 攔截器
axios.interceptors.request.use(
  config => {
    if (localStorage.JWT_TOKEN) {  // 判斷是否存在token,如果存在的話,則每個http header都加上token
      config.headers.Authorization = `token ${localStorage.JWT_TOKEN}`;
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  });

// http response 攔截器
axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response) {
      console.log("axios:" + error.response.status);
      switch (error.response.status) {
        case 401:
          // 返回 401 清除token信息并跳轉(zhuǎn)到登錄頁面
          store.commit("LOG_OUT");
          router.replace({
            path: "login",
            query: {redirect: router.currentRoute.fullPath}
          });
      }
    }
    return Promise.reject(error.response.data);   // 返回接口返回的錯誤信息
  });

Vue.prototype.$http = axios;
后端 CodeIgniter

后端 Controller 接收請求頭信息,驗(yàn)證 token 有效性,無效返回 401 狀態(tài)碼

    $header = $this->input->get_request_header("Authorization", TRUE); // 獲取請求頭 Authorization
    list($token) = sscanf($header, "token %s"); // 提取 token
    if ($header != "" && jwt_helper::validate($token)) {
        $userid = jwt_helper::decode($header)->userId; // 解碼token 提取 userId 字段
        // do something
    } else {
        show_error("Permission denied", 401, "Please check your token."); // 401錯誤
    }
這里提供了自己使用的封裝好的 JWT Helper 類 和 JWT 的庫 使用方法和文件可以訪問 Github
倉庫:https://github.com/52admln/JW...
安全性

可參考文章:http://www.cnblogs.com/xiekel... 當(dāng)中的基于JWT的Token認(rèn)證的安全問題。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/31972.html

相關(guān)文章

  • 前后分離應(yīng)用——用戶信息傳遞

    摘要:前言記錄前后端分離的系統(tǒng)應(yīng)用下應(yīng)用場景用戶信息傳遞需求緣起照例先看看系統(tǒng)的一張經(jīng)典架構(gòu)圖,這張圖參考自網(wǎng)絡(luò)在自定義異常,你是怎么處理的中已經(jīng)對該架構(gòu)做了簡單說明,這里不再描述。 showImg(https://segmentfault.com/img/remote/1460000017839927?w=1024&h=768); 前言 記錄前后端分離的系統(tǒng)應(yīng)用下應(yīng)用場景————用戶信息傳...

    PAMPANG 評論0 收藏0
  • jwt前后整合方案

    摘要:到這里,基于的前后端分離實(shí)現(xiàn)方案就搞定啦四關(guān)于的一些思考實(shí)際上,在使用的過程中有一個比較致命的缺點(diǎn),就是一旦簽發(fā)了,在到期之前就會始終有效,除非服務(wù)器部署額外的邏輯。結(jié)語以上是關(guān)于基于的前后端分離實(shí)現(xiàn)方案的總結(jié)和思考。 一、jwt是什么 JWT全稱, JSON Web Token,是一個以JSON為基準(zhǔn)的標(biāo)準(zhǔn)規(guī)范。 舉例:服務(wù)器認(rèn)證以后,生成一個 JSON 對象,發(fā)回給用戶,就像下...

    nevermind 評論0 收藏0
  • api權(quán)限管理系統(tǒng)與前后分離實(shí)踐

    摘要:自己在前后端分離上的實(shí)踐要想實(shí)現(xiàn)完整的前后端分離,安全這塊是繞不開的,這個系統(tǒng)主要功能就是動態(tài)管理,這次實(shí)踐包含兩個模塊基于搭建的權(quán)限管理系統(tǒng)后臺編寫的前端管理。 自己在前后端分離上的實(shí)踐 要想實(shí)現(xiàn)完整的前后端分離,安全這塊是繞不開的,這個系統(tǒng)主要功能就是動態(tài)restful api管理,這次實(shí)踐包含兩個模塊,基于springBoot + shiro搭建的權(quán)限管理系統(tǒng)后臺bootshir...

    bawn 評論0 收藏0
  • api權(quán)限管理系統(tǒng)與前后分離實(shí)踐

    摘要:自己在前后端分離上的實(shí)踐要想實(shí)現(xiàn)完整的前后端分離,安全這塊是繞不開的,這個系統(tǒng)主要功能就是動態(tài)管理,這次實(shí)踐包含兩個模塊基于搭建的權(quán)限管理系統(tǒng)后臺編寫的前端管理。 自己在前后端分離上的實(shí)踐 要想實(shí)現(xiàn)完整的前后端分離,安全這塊是繞不開的,這個系統(tǒng)主要功能就是動態(tài)restful api管理,這次實(shí)踐包含兩個模塊,基于springBoot + shiro搭建的權(quán)限管理系統(tǒng)后臺bootshir...

    tianlai 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<