jwt-simple過期時間不對問題

来源:https://www.cnblogs.com/cltomoya/archive/2018/03/12/8550027.html
-Advertisement-
Play Games

今天用node寫後臺,登錄認證使用了token,然後就使用了簡單的jwt simple,但是發現設置的過期時間不對,一直沒有提示過期,但是明明是已經過期了的時間,於是檢查了下jwt simple的源代碼。 我的路徑,根目錄下\node_modules\jwt simple\lib\jwt.js jw ...


今天用node寫後臺,登錄認證使用了token,然後就使用了簡單的jwt-simple,但是發現設置的過期時間不對,一直沒有提示過期,但是明明是已經過期了的時間,於是檢查了下jwt-simple的源代碼。
我的路徑,根目錄下\node_modules\jwt-simple\lib\jwt.js

jwt.decode = function jwt_decode(token, key, noVerify, algorithm) {
  // check token
  if (!token) {
    throw new Error('No token supplied');
  }
  // check segments
  var segments = token.split('.');
  if (segments.length !== 3) {
    throw new Error('Not enough or too many segments');
  }

  // All segment should be base64
  var headerSeg = segments[0];
  var payloadSeg = segments[1];
  var signatureSeg = segments[2];

  // base64 decode and parse JSON
  var header = JSON.parse(base64urlDecode(headerSeg));
  var payload = JSON.parse(base64urlDecode(payloadSeg));

  if (!noVerify) {
    var signingMethod = algorithmMap[algorithm || header.alg];
    var signingType = typeMap[algorithm || header.alg];
    if (!signingMethod || !signingType) {
      throw new Error('Algorithm not supported');
    }

    // verify signature. `sign` will return base64 string.
    var signingInput = [headerSeg, payloadSeg].join('.');
    if (!verify(signingInput, key, signingMethod, signingType, signatureSeg)) {
      throw new Error('Signature verification failed');
    }

    // Support for nbf and exp claims.
    // According to the RFC, they should be in seconds.
    if (payload.nbf && Date.now() < payload.nbf*1000) {
      throw new Error('Token not yet active');
    }

    if (payload.exp && Date.now() > payload.exp*1000) {
      throw new Error('Token expired');
    }
  }

  return payload;
};

這是解密的函數,發現在最後面

    if (payload.exp && Date.now() > payload.exp*1000) {
      throw new Error('Token expired');
    }

這裡的時候,多上了1000。。。。。這就尷尬了,然後又看了下加密的,並沒有什麼除於100的操作。。。這樣子怎麼可能會過期。。
相對應的要改也就簡單了,你可以去掉
1000,或者再設置過期時間的時候/1000。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 閱讀目錄 介紹 CSS 的基本語法格式 介紹 基礎選擇器 介紹 組合選擇器 介紹 偽選擇器 介紹 其他 一、CSS 的基本語法格式 代碼: 運行結果為: 段落是紅色的。 註意: 上面是一個簡單的演示示例 重點看 <style> 元素 CSS 語法的一般形式是 selector{ property: ...
  • 用戶註冊頁面以及js特效:1、表單聯動;2、正則表達式驗證。 一、html和css代碼(用table進行佈局,div也可以達到一樣的效果) 1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <style> 5 table{ 6 border-collapse: ...
  • 彈窗製作: 優化 css用模板字元串(裡面需要加一個style 標簽)插入的 ${'head'}.append(css) append()插入末尾prepend ()在 p 元素的開頭插入內容 $(".btn1").click(function(){ $("p").prepend("<b>Hello ...
  • 一,js的引入方式 1,script標簽內寫代碼 2,引入額外的js文件 二,js語言規範 1,註釋 2,結束符 JavaScript中的語句要以分號(;)為結束符。 三,js語言基礎 1,變數聲明 註意: 變數名是區分大小寫的。 推薦使用駝峰式命名規則。 保留字不能用做變數名。 四,Js數據類型 ...
  • 寫在前面的話:之前一直以為定時器的返回值是Object類型,所以timer初始化也是寫null,今天發現返回值是number,進而發覺這個返回值代表的是定時器的索引,指代這是第幾個定時器 個人覺得只用set/clearInterval方法就好,他可以實現另外的一個方法的所有功能 啟用定時器的方法有兩 ...
  • 一,css介紹 CSS(Cascading Style Sheet,層疊樣式表)定義如何顯示HTML元素。 當瀏覽器讀到一個樣式表,它就會按照這個樣式表來對文檔進行格式化(渲染)。 二,CSS語法 1,每個CSS樣式由兩個組成部分:選擇器和聲明。聲明又包括屬性和屬性值。每個聲明之後用分號結束。 2, ...
  • 本文最初發表於 "博客園" ,併在 "GitHub" 上持續更新 前端的系列文章 。歡迎在GitHub上關註我,一起入門和進階前端。 以下是正文。 前言 提升頁面性能優化的常見方式: 1、資源壓縮合併,減少http請求 2、 非核心代碼非同步載入 非同步載入的方式 非同步載入的區別 3、利用瀏覽器緩存 緩 ...
  • 用原生js製作的簡易留言板。 具備以下功能:1、在輸入框輸入文字留言;2、將留言顯示在留言板;3、刪除留言。 html和css代碼: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <style> 6 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...