קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
קודקודייל
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
  • קודקודייל
  • מי אתם קודקודייל?
  • קורסים בחינם
  • צרו קשר
  • בניית אתרים
    • וורדפרס
  • נגישות אתרים
  • כל הקטגוריות
    • אנגולר
    • HTML
    • CSS
    • Javascript
    • Typescript
    • NodeJs
    • בלוקציין
ראשי ♦ Javascript ♦ מדריך nodeJS Express – חלק 4 – middleware

מדריך nodeJS Express – חלק 4 – middleware

עידן יצחקי 26 בפברואר 2022 3 תגובות

בספרית middleware ניצור קבצים עם פונקציות שנועדו לבצע פעולה מסויימת (ספציפית) ואפשר לקרוא לה מכל מקום באפליקציה.

נראה כאן דוגמה לשירות כזה, שבודק האם המשתמש מאומת

const jwt = require("jsonwebtoken");


module.exports = (req, res, next) => {
    try {
        const token = req.headers.authorization.split(" ")[1];
        const decodedToken = jwt.verify(token, process.env.JWT_KEY);
        req.userData = { email: decodedToken.email, userId: decodedToken.userId };
        next();
    } catch (error) {
        res.status(401).json({ message: "You are not authenticated!" });
    }
}

יש צורך להתקין את התוסף, הוא מיצר מפתח למשתמש ועבור כל בקשה שאנחנו רוצים להגן עליה, אנחנו שולחים אותה לפונקציה הזו, אשר עושה בדיקה שלו מול המייל והזיהוי שלו.

במידה שיש חוסר התאמה, תעלה שגיאה וזו התשובה שתחזור מהפונקציה, אבל אם הכל תקין יופעל ה-next ויתן לבקשה להתקדם הלאה ליעד שלה.

הטוקן שנשלח מהמשתמש, נשלח ב-headers של הבקשה באופן קבוע, תחת ההדר authorization. הוא לא חייב ואתם יכולים לקבוע משהו אחר אבל נהוג לבצע את זה כך.

בנוסף, הטוקן עצמו נשלח כאשר מצורף לו בהתחלה מילה (בדרך כלל Bearer) רווח והטוקן. לכן בשורה 6 אנחנו מחלצים רק את הטוקן לפני ביצוע הבדיקה.

בשורה 7 אנחנו מחלצים את המפתח שאנחנו עשינו כבסיס לקידוד שלנו.

במקרה שלנו (בגלל שימוש ב-nodemone) הוספתי בקובץ nodemon.json את ההגדרה הבאה:

{
    "env": {
        "JWT_KEY": "secret_this_should_be_longer"
    }
}

המידע הזה מתווסף לפרוסס של nodejs וניתן למשוך אותו מכל מקום באפליקציה.

בעקרון אפשר להגיד שסיימנו, בחלק הקודם של הקורס ראיתם כבר איך זה מתופעל.

הנה תזכורת לשימוש של זה:

const express = require("express");
const loginController = require("../controllers/login");
const checkAuth = require("../middleware/check-auth");
const router = express.Router();

router.post("/signup", loginController.createUser);
router.post("/login", loginController.userLogin);
router.get("/info/:id", checkAuth, loginController.getUserInfo);

module.exports = router;

שורה 3:

חיבור לפונקציה שכרגע יצרנו.

שורה 8:

בדיקת אימות לפני הפעלת פונקצית getUserInfo.

בחלק הבא נראה איך הכל מתחבר ביחד לקובץ app.js שהוא השרת שלנו.

פוסטים קשורים:

מדריך nodeJS Express – חלק 3 – routes מדריך nodeJS Express – חלק 2 – controllers מדריך nodeJS Express – חלק 1 – models תמונת אווירה של דאטהאיך לשמור או לעדכן מערך של אובייקטים ב-mongoDb בשימוש nodeJs Express
express javascript nodejs מדריך

אודות המחבר

עידן יצחקי להציג את כל הפוסטים של עידן יצחקי


« פוסט קודם
פוסט הבא »

3 תגובות

  1. אבי הגב 10 באפריל 2023 בשעה 1:50

    היי

    תודה על ההסבר הנפלא!!!

    רק לא הבנתי מהיכן קיבלת את הקובץ nodemon.json?

    לי אין אותו…

    מהיכן אוכל לקבלו?

    תודה רבה , אבי

  2. אבי הגב 10 באפריל 2023 בשעה 1:51

    היי

    תודה על ההסבר הנפלא!!!

    רק לא הבנתי מהיכן קיבלת את הקובץ nodemon.json?

    לי אין אותו…

    מהיכן אוכל לקבלו?

  3. עידן יצחקי הגב 11 באפריל 2023 בשעה 15:40

    היי,
    שמח שהפוסט עזר לך.
    במידה והקובץ לא נוצר לך, אתה יכול ליצור אותו ידנית בספריית הבסיס (ROOT) .
    nodemon ידע להתייחס אליה אם היא קיימת.
    לא לשכוח לאתחל את השרת אחרי הוספה של הקובץ כדאי שהוא יכנס לעבודה

השארת תגובה

ביטול

חיפוש באתר
בחירת העורכים
29 בדצמבר 2023 עידן יצחקי

שדה טקסט עשיר עם תמונות

אתם הולכים להיות מופתעים עד כמה HTML יכול להיות חכם ולבצע משהו כל כך מורכב, שאם אנחנו היינו רוצים ליצור

1 באוקטובר 2021 עידן יצחקי

איך למשוך דינמית favicon של אתרים אחרים ב-JS

בפוסט זה נראה איך אפשר על פי לינקים בדף למשוך את ה-favicon מהדומיין שלהם באופן דינמי, בדיקה של תקינות התמונה

פופולרי
Javascript functions – היכרות עם סוגי פונקציות
Javascript
21 בדצמבר 2024 אין תגובות
Nested routing in angular standalone component
Typescript
15 בנובמבר 2024 תגובה אחת
בחרו לפי תגיות
angular blockchain css ethers express front-end fullstack GQL html javascript next js nextjs nodejs react hooks reactjs solidity webgl אנגולר בלוקציין וורדפרס לימודי אנגולר לימודי וורדפרס לימוד ריאקט מדריך front-end מדריך GQL מדריך אנגולר מדריך וורדפרס מדריך חינם react מדריך ריאקט מפתח בלוק מפתח בלוקציין מתכנת front-end מתכנת בלוקציין מתכנת פרונט סולידיטי קורס front end קורס fullstack קורס nextjs קורס אנגולר קורס בלוקציין קורס בלוקציין בחינם קורס סולידיטי קורס ריאקט קורס תכנות קורס תכנות בחינם
סינון על פי קטגוריות
CSS fullstack HTML IIS Javascript nodeJs SEO Typescript אנגולר בלוקציין בניית אתרים וורדפרס חיפוש עבודה כלים נוספים כללי נגישות קורסים ריאקט תלת מימד תקלות ופתרונות
צור קשר
כל הזכויות שמורות לקודקודייל
ליצירת קשר: @ קודקודייל
גלילה לראש העמוד