nodejs工程案例,nodejs網站項目實例

本文目錄一覽:

求《nodejs開發實戰詳解電子式》全文免費下載百度網盤資源,謝謝~

《nodejs開發實戰詳解電子式》百度網盤pdf最新全集下載:

鏈接:

?pwd=nkw0 提取碼:nkw0

簡介:本書共分為11章。涵蓋的主要內容有:Node.js的概念、應用場景、環境搭建和配置、非同步編程;Node.js的模塊概念及應用、Node.js的設計模式;簡單服務的搭建、Node.js靜態資源管理、文件處理、Cookie和Session實踐、Crypto模塊加密、Node.js與Nginx配合;UDP伺服器的搭建、Node.js與PHP之間合作;Node.js的實現機制、Node.js的原生擴展與應用;Node.js的編碼習慣;Node.js操作MySQL和MongoDB;基於Node.js的Myweb框架的基本設計架構及實現;利用Myweb框架實現一個簡單的Web聊天室;在線聊天室案例和在線中國象棋案例的實現;Node.js的日誌模塊、curl模塊、crontab模塊、forever模塊、xml模塊和郵件發送模塊等應用工具。

本書非常適合從事編程開發的學生、教師、廣大科研人員和工程技術人員研讀。建議閱讀本書的讀者對的語法和PHP的相關知識有的了解。當然,如果你是初學者,本書也是一本難得的參考書。  

NodeJS,mysql2/promise,連接池執行,將數據複製到另一個資料庫

產品開發了新版本,數據不兼容,新版本的數據結構比舊版本複雜一些,目前,舊版本是在線系統,需要將舊版本程序的數據適配至新版本程序。資料庫是MySQL,這裡選擇使用NodeJS來完成。

使用的版本:

需要的依賴

案例一,單表的數據同步:

databasemysqlmysql.tools.js

databasemysql2mysql2.tools.js

syncdata0.basesyncData.js

syncdata1.manufactormain.manufactor.js

syncdata2.brandmain.brand.js

syncdata3.categorymain.category.js

案例二,關聯表的數據同步:

databasemysql2mysql2.promise.tools.js

syncdata4.general_namemain.general_name.js

syncdata5.goodsmain.goods.js

NodeJS(Express框架)實現 Token 驗證免密登錄 (一)

看文章之前,強烈建議先把項目拉取下來!案例來自小弟的開源項目 「項目Github」

文章內容只是個人學習的一些總結經驗,不具有權威性,這是 Node 服務端的實現,後面會寫前端的實現

常見的 Token 驗證方式種:

推薦閱讀:

JWT 超詳細分析

說一說幾種常用的登錄認證方式,你用的哪種

推薦閱讀:

JSON Web Token 入門教程

JSON Web Token – 在Web應用間安全地傳遞信息

首先我們先安裝 jsonwebtoken 和 express-jwt 這兩個中間件

jsonwebtoken : 用於生成 Token 。它也有解析 Token 的功能

express-jwt : 用於解析 Token(比 jsonwebtoken 解決方便) , 它把解析之後的數據,存放到 requset.user 中

如果你看了上面 JWT 介紹的文章,就知道 JWT 是由三部分組成的,分別是 載荷(Payload) 、 頭部(Header) 、 簽名(Signature) 。

jsonwebtoken 給我們提供了 sign(payload, secretOrPrivateKey, [options, callback]) 方法。sign 方法對應的其實就是 JWT 簽名(Signature) 的動作

payload:荷載 ,參數類型:對象secretOrPrivateKey:自定義的密鑰,密鑰屬於敏感信息。參數類型:字元串options:可以配置 header 、荷載、指定演算法類型。參數類型:對象callback:回調

眼尖的朋友應該發現, payload 和 options 兩個 參數 都可以配置荷,下面有例子。根據自己的習慣選擇就好

Payload 部分 JWT 規定了7個官方欄位,這些欄位都是可選欄位。可直接以對象的形式傳給 payload 參數。

options 中也可以接受以上七個欄位,不過欄位名稱有所區別。

除此之後 options 提供了 algorithm 和 header ,分別對應使用的加密演算法和 JWT 的 Header 部分,其實 algorithm 應該也是屬於 Header 部分的。

說了這麼多,其實我們一般常用的只有 exp(expiresIn) 和 algorithm 這兩個欄位,

例子一:

token 的有效時間是配置在 option 里

例子二:

我們也可以在 payload 里配置有效時間

jsonwebtoken 除了生成 token 外,還提供了解析驗證 token 的方法, jwt.verify(token, secretOrPublicKey, [options, callback]) 。

這裡就不演示了, 感興趣的朋友可以參考文檔: 「JsonWebToken」

express-jwt 是針對 express 框架開發的 JWT Token 驗證中間件。我先來簡單說以下它的用法。

主要有兩種方式,一種是哪些請求需要驗證就往哪裡加驗證;另外一種是先給全部請求加上驗證,再給不需要驗證的請求配置 白名單 。

方式一:

看完上面的例子,很顯然不符合我們的逾期,一個正常的項目有個幾十個 api 是分分鐘的事。我們不可能一個個給他加上檢驗

方式二:

這種方式是不是方便很多,而且更美觀,維護起來也更方便

Token 解析出來的用戶信息,默認存放在 req.user , 可以直接 req.user.userId 來使用生成 Token 時填進去的用戶id

你也通過 requestProperty 和 resultProperty 來設置用戶信息存放的對象。

這裡就不展開,詳細文檔參考: express-jwt

可以使用 app.use() 來註冊處理驗證不通過的情況

到這裡 Token 的生成、驗證、檢驗不通過錯誤處理就完成了。 Token 生成一般是在登錄之後生成,並返回給前端,前端拿到 Token ,並在每次請求 api 的時候攜帶上 Token , Token 就相當於這個用戶的身份,不要輕易泄露。

Token一旦簽發,不能主動讓它失效,只能等待它有效期過才能失效。也就是說就算你修改了密碼,之前的 Token 也還是有效的。你可以修改後端生成 Token 時使用的密鑰,不讓之前的 Token 檢驗通過,但是這就表示之前所有生成 Token 都失效了,做不到針對某個用戶進行註銷。這顯然也不合適的。 所以用戶修改密碼時,前端一般都要清除之前保存的 Token,再重獲取新的 Token

有朋友應該會想到在後端把 Token 儲存起來,每一個用戶對應一個 token。修改賬號時,再生成一個新的 Token 覆蓋之前的 Token,但這就違背了使用 Token 的目的,Token 的使用很大程度就為了減少伺服器的壓力。把儘可能多的信息存儲在客戶端而不是服務端。

使用 Token 可以防禦 CSRF 攻擊,之前寫過一篇關於網路安全的文章,感興趣的朋友可以看一下 「XSS 攻擊、CSRF 攻擊、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 瀏覽器安全」

nodejs用戶信息管理案例代碼怎麼寫

用戶信息案例—Node.js編寫(MongoDB資料庫) 準備工作: 利用第三方模塊 mongoose 連接資料庫,代碼如下: // 首先在命令行中使用 npm install。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/187763.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-28 06:25
下一篇 2024-11-28 06:26

相關推薦

  • Python數據統計案例的實現

    Python作為一個高級編程語言,擁有著豐富的數據處理庫和工具,能夠快速、高效地進行各類數據處理和分析。本文將結合實例,從多個方面詳細闡述Python數據統計的實現。 一、數據讀取…

    編程 2025-04-29
  • 掌握magic-api item.import,為你的項目注入靈魂

    你是否曾經想要導入一個模塊,但卻不知道如何實現?又或者,你是否在使用magic-api時遇到了無法導入的問題?那麼,你來到了正確的地方。在本文中,我們將詳細闡述magic-api的…

    編程 2025-04-29
  • Python生成隨機數的應用和實例

    本文將向您介紹如何使用Python生成50個60到100之間的隨機數,並將列舉使用隨機數的幾個實際應用場景。 一、生成隨機數的代碼示例 import random # 生成50個6…

    編程 2025-04-29
  • Vue TS工程結構用法介紹

    在本篇文章中,我們將從多個方面對Vue TS工程結構進行詳細的闡述,涵蓋文件結構、路由配置、組件間通訊、狀態管理等內容,並給出對應的代碼示例。 一、文件結構 一個好的文件結構可以極…

    編程 2025-04-29
  • 如何將Java項目分成Modules並使用Git進行版本控制

    本文將向您展示如何將Java項目分成模塊,並使用Git對它們進行版本控制。分割Java項目可以使其更容易維護和拓展。Git版本控制還可以讓您跟蹤項目的發展並協作開發。 一、為什麼要…

    編程 2025-04-28
  • GitHub好玩的開源項目

    本文旨在介紹GitHub上一些好玩的開源項目,並提供代碼示例供讀者參考和學習。 一、Emoji列表 GitHub上有一份完整的Emoji列表,它支持各種平台和設備,方便用戶在Git…

    編程 2025-04-28
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • IIS部署Python項目

    本文將從多個方面詳細闡述在IIS上如何部署Python項目。包括安裝IIS、安裝Python、配置IIS、編寫和部署Python代碼等內容。 一、安裝IIS和Python 在開始進…

    編程 2025-04-28
  • 如何在dolphinscheduler中運行chunjun任務實例

    本文將從多個方面對dolphinscheduler運行chunjun任務實例進行詳細的闡述,包括準備工作、chunjun任務配置、運行結果等方面。 一、準備工作 在運行chunju…

    編程 2025-04-28
  • 如何使用TKE來開發Java項目

    本文將從多個方面詳細闡述如何使用TKE(Theia IDE)來進行Java項目的開發。TKE是一個功能強大的在線集成開發環境,提供了大量的工具和插件,讓開發者可以高效地進行Java…

    編程 2025-04-28

發表回復

登錄後才能評論