搜尋
首頁web前端js教程驗證、認證和授權

Validation, Authentication and Authorization

內容概述

本文擴展了先前的教程,涵蓋了使用 Express.js 創建基本 CRUD API,重點關注關鍵的安全方面:驗證、身份驗證和授權。 我們將以前面的範例為基礎,因此建議熟悉該資料。 完整的專案可在 GitHub 上取得(下面提供的連結)。

關鍵概念

  • 驗證:確保使用者提供的資料符合預先定義的規則和標準。 這對於安全性至關重要,可以防止 SQL 注入等漏洞。 一些資源強調了穩健驗證的重要性(下面提供的連結)。

  • 驗證:驗證使用者的身分。這通常涉及根據儲存的記錄檢查憑證(例如使用者名稱/電子郵件和密碼)。

  • 授權:決定允許使用者執行哪些操作。 這根據使用者角色和權限控制對資源的存取。

實作驗證

我們將為 nameamountdate 欄位建立驗證函數:

  • name: 字串,非空,10-255 個字元。
  • amount: 數字或數字字串,正數,非空。
  • date: 字串,可選(如果省略,則預設為當前日期),YYYY-MM-DD 格式。

這些函數(位於validations.js)利用型別檢查和基本格式驗證。 可以新增更全面的驗證(例如日期範圍檢查)。

// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };

新增驗證與授權

為了進行演示,我們將使用記憶體資料儲存(物件數組)來儲存使用者和費用。 這適合生產。

data.js 檔案儲存使用者和費用資料:

// data.js (excerpt)
let users = [
    { id: "...", email: "...", password: "..." }, //Example User
    // ...more users
];

let expenditures = [
    { id: "...", userId: "...", name: "...", amount: ..., date: "..." }, //Example Expense
    // ...more expenses
];

module.exports = { expenditures, users };

註冊端點 (/users/signup)

此端點建立新使用者。 它驗證電子郵件和密碼,檢查電子郵件重複項,產生 UUID,並(僅適用於本演示)儲存原始密碼。 傳回 Base64 編碼的身份驗證令牌 (email:UUID)。 為了簡單起見,省略了密碼哈希,但它在生產環境中至關重要。

登入端點 (/users/login)

此端點對現有使用者進行身份驗證。 它會驗證憑證並在成功時傳回 Base64 編碼的身份驗證令牌。

受保護端點

為了保護端點(例如,/expenditures),我們需要在請求標頭(Authorization 標頭)中使用身份驗證令牌。令牌被解碼,使用者被驗證,並且只返回使用者自己的資料。

// validations.js (excerpt)
const isString = (arg) => typeof arg === "string";
const isNumber = (arg) => !isNaN(Number(arg));

function isValidName(name) { /* ... */ }
function isValidAmount(amount) { /* ... */ }
function isValidDate(date) { /* ... */ }

module.exports = { isValidName, isValidAmount, isValidDate };

結論

本文提供了 Node.js/Express.js API 中驗證、驗證和授權的基本介紹。 請記住,此處示範的安全措施是出於教育目的而簡化的,並且不應在生產系統中使用。 生產就緒的應用程式需要強大的密碼雜湊、安全令牌管理(建議 JWT)和資料庫整合。

資源

(請記得將括號中的佔位符替換為實際連結。)

以上是驗證、認證和授權的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript評論:使用//和 / * * / * / * /JavaScript評論:使用//和 / * * / * / * /May 13, 2025 pm 03:49 PM

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用