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

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

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

הפעלות בגו

אתה יכול להשתמש בחבילת net/http כדי ליישם הפעלות, ויש הרבה חבילות זמינות שכבר עושות זאת. הפופולרי ביותר הוא חבילת הפעלות Gorilla. חבילה זו מספקת פונקציונליות של אחסון קובצי Cookie וקבצים לצד תשתית עורפית מותאמת אישית של הפעלה.

הפעל פקודה זו בסביבת העבודה שלך Go כדי להתקין את חבילת ההפעלות של Gorilla.

ללכת קבל github.com/gorilla/sessions

במדריך זה, תשתמש בחנות עוגיות להפעלות. אתה תשתמש בחבילת net/http כדי להפעיל שרת אינטרנט שיבדוק את הבעיה של המשתמש ויבטל הפעלות.

להלן רשימת הייבוא ​​שתצטרך כדי לעקוב אחר הדרכה זו.

יְבוּא (
"github.com/gorilla/sessions"
"עֵץ"
"נטו/http"
)
instagram viewer

ה עֵץ החבילה מיועדת לפעולות הקשורות לרישום המבוססות על מצב האימות של המשתמש.

יישום פשוט של חנות עוגיות

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

הנה פונקציה ליישום חנות העוגיות.

// פונקציית cookieStore יוצרת חנות עוגיות עם המפתח הסודי של המשתמש
funcחנות עוגיות() *הפעלות.CookieStore {
מפתח סודי := []בייט("Super-Secret-SecretKey")
cookieStore := הפעלות. NewCookieStore (SecretKey)

// הפונקציה מחזירה את מאגר העוגיות כך שפונקציות אחרות יוכלו לגשת אליה
לַחֲזוֹר חנות עוגיות
}

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

הפונקציה מחזירה ערך של *מפגשים. CookieStore סוג המייצג את מאגר העוגיות המאובטח באמצעות המפתח הסודי. אתה תשתמש ב- CookieStore לתפקד אצלך התחברות ו להתנתק מטפלים לאימות משתמשים והקצאת הפעלות.

פונקציית מטפל ההתחברות

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

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

// מטפל בכניסה מאחזר את ההפעלה מחנות העוגיות
funcהתחברות(כותב http. כותב תגובה, בקשה *http. בַּקָשָׁה) {
session, err := cookieStore(). Get (request, "Cookie Name From Request")

אם טעות != אֶפֶס {
עֵץ. פתאלן (שגיאה)
}

// הגדר את אימות המשתמש שלך כאן על סמך הפעולה
מוֹשָׁב. ערכים["auth status"] = נָכוֹן
שגיאה = הפעלה. שמור (בקשה, כותב)

אם טעות != אֶפֶס {
לַחֲזוֹר
}
}

המאפיין Values ​​מכיל את הנתונים הקשורים להפעלה בחנות העוגיות:

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

אימות סטטוס התחברות של משתמש

מטפל האימות שלך צריך לאחזר את ההפעלה מהעוגייה של הלקוח באמצעות חנות העוגיות לקבל שיטה. לאחר מכן תוכל לאחזר את ההפעלה ולאמת את המשתמש.

funccheckAuthStatus(כותב http. כותב תגובה, בקשה *http. בַּקָשָׁה) {
session, err := cookieStore(). Get (request, "Cookie Name From Request")

אם טעות != אֶפֶס {
עֵץ. פתאלן (שגיאה)
}

מאומת := הפעלה. ערכים["סטטוס אישור"]

אם מאומת == נָכוֹן {
סוֹפֵר. WriteHeader (http. סטטוס אישור) // כתוב קוד סטטוס 200
לַחֲזוֹר
} אַחֵר {
סוֹפֵר. WriteHeader (http. StatusBadRequest) // כתוב קוד סטטוס 400 http
לַחֲזוֹר
}
}

ה מְאוּמָת המשתנה משתמש ב- ערכים נכס כדי לאחזר את הסטטוס מחנות העוגיות. הצהרת if מאמתת את סטטוס האימות הזה. אם זה מעריך נָכוֹן, הלקוח מקבל את ה-200 קוד מצב HTTP. אם סטטוס האימות אינו נכון, הלקוח מקבל את קוד המצב 400 HTTP.

מטפל ההתנתקות של הפגישה

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

funcלהתנתק(כותב http. כותב תגובה, בקשה *http. בַּקָשָׁה) {
session, err := cookieStore(). Get (request, "Cookie Name From Request")

אם טעות != אֶפֶס {
לַחֲזוֹר
}

// לבטל את ההפעלה של המשתמש מחנות העוגיות
מוֹשָׁב. ערכים["auth status"] = שֶׁקֶר
שגיאה = הפעלה. שמור (בקשה, כותב)

אם טעות != אֶפֶס {
לַחֲזוֹר
}
}

ה להתנתק פונקציית המטפל מבטלת את סטטוס אימות ההפעלה של המשתמש ושומרת את הסטטוס בחנות העוגיות.

אל תאחסן נתונים רגישים בפעילויות באתר

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

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