Όταν η εφαρμογή Ιστού σας χρειάζεται να "θυμάται" τους χρήστες, συνήθως χρησιμοποιεί έναν από τους δύο μηχανισμούς: cookies ή περιόδους σύνδεσης. Ένα cookie είναι μια μικρή περιοχή αποθήκευσης στο πρόγραμμα περιήγησης όπου μπορείτε να διατηρήσετε δεδομένα που σχετίζονται με τον χρήστη, όπως προτιμήσεις αναζήτησης, για παράδειγμα. Οι περίοδοι λειτουργίας σάς επιτρέπουν να αποθηκεύετε ευαίσθητες πληροφορίες στον διακομιστή.
Ανακαλύψτε πώς να ρυθμίσετε περιόδους σύνδεσης σε έναν διακομιστή Express που υποστηρίζεται από το Node.js.
Τι θα χρειαστείτε
Για να ακολουθήσετε αυτό το σεμινάριο, πρέπει να έχετε εγκαταστήσει τόσο το Node.js όσο και το npm. Οποιαδήποτε πρόσφατη έκδοση του Node.js πρέπει να συνοδεύεται από npm, ένας διαχειριστής πακέτων για την εγκατάσταση εξαρτήσεων.
Θα χρησιμοποιήσετε το npm για να εγκαταστήσετε το Express και το express-session. Αυτά είναι τα εργαλεία που θα χρησιμοποιήσετε για να δημιουργήσετε τον διακομιστή web και τη συνεδρία.
Τι είναι μια περίοδος λειτουργίας στο Node.js;
Ένα cookie είναι ένα μικρό αρχείο που χρησιμοποιεί το πρόγραμμα περιήγησής σας για την αποθήκευση δεδομένων. Μπορείτε να χρησιμοποιήσετε cookies για να αποθηκεύσετε μη ευαίσθητα δεδομένα όπως προτιμήσεις αναζήτησης.
Δεν πρέπει να αποθηκεύετε ευαίσθητα δεδομένα (όπως ονόματα χρήστη και κωδικούς πρόσβασης) σε cookies. Όταν το πρόγραμμα περιήγησής σας στέλνει cookies μέσω HTTP, είναι ευάλωτα σε χάκερ που μπορεί να είναι σε θέση να τα υποκλέψουν. Είναι επίσης αποθηκευμένα σε απλό κείμενο στον υπολογιστή σας, ώστε οι χάκερ να μπορούν ενδεχομένως να τα επιθεωρήσουν και να κλέψουν τα δεδομένα σας.
Αντί να αποθηκεύετε ευαίσθητα δεδομένα ως cookie στον πελάτη, θα πρέπει να τα αποθηκεύσετε στον διακομιστή. Αυτό το κρατά προστατευμένο από τον έξω κόσμο.
Οι περίοδοι λειτουργίας σάς επιτρέπουν να αποθηκεύετε ευαίσθητα δεδομένα που χρειάζεται η εφαρμογή σας για την αναγνώριση του χρήστη. Παραδείγματα είναι το όνομα χρήστη, ο κωδικός πρόσβασης και το email. Είναι πιο ασφαλή επειδή ζουν στον διακομιστή και όχι στον πελάτη.
Κάθε φορά που έχετε δεδομένα που θέλετε να διατηρηθούν σε όλα τα αιτήματα, αποθηκεύστε τα στην πλευρά του διακομιστή χρησιμοποιώντας μια περίοδο λειτουργίας. Θα μάθετε πώς να δημιουργείτε μια συνεδρία στην παρακάτω ενότητα.
Δημιουργία περιόδου λειτουργίας σε διακομιστή Express
Το Express είναι ένα δημοφιλές πλαίσιο ιστού για το Node.js. Σας επιτρέπει να ρυθμίσετε μια εφαρμογή διακομιστή ιστού που ακούει τα αιτήματα πελατών στον αριθμό θύρας που έχετε επιλέξει. Μπορείτε να δημιουργήσετε διαδρομές API, να εφαρμόσετε ενδιάμεσο λογισμικό και ακόμη και να συνδέσετε την εφαρμογή σε μια βάση δεδομένων, όλα χάρη στα API που παρέχονται από το πλαίσιο.
1. Δημιουργήστε ένα έργο Node.js
Δημιουργήστε έναν ολοκαίνουργιο φάκελο για το έργο σας και, στη συνέχεια, εκκινήστε το εργαλείο γραμμής εντολών και το cd σε αυτόν τον φάκελο.
Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να αρχικοποιήσετε ένα έργο Node.js:
npm init -y
Αυτό δημιουργεί ένα αρχείο package.json στον ριζικό φάκελο του έργου με την προεπιλεγμένη ρύθμιση. Το αρχείο package.json για εκτέλεση npm σενάρια.
2. Εγκαταστήστε το Express και το express-session
Θα χρησιμοποιήσετε το Express για να δημιουργήσετε την εφαρμογή διακομιστή ιστού. Και express-session για τη δημιουργία συνεδριών σε αυτήν την εφαρμογή διακομιστή.
Στο τερματικό, εκτελέστε την ακόλουθη εντολή για να εγκαταστήσετε και τις δύο εξαρτήσεις:
npm i express-session
Μετά την εγκατάσταση και των δύο πακέτων, το επόμενο βήμα θα ήταν η δημιουργία του διακομιστή.
3. Δημιουργία περιόδων σύνδεσης στην εφαρμογή
Δημιουργήστε ένα αρχείο με το όνομα App.js στον ριζικό φάκελο του έργου σας και εισαγάγετε τις εξαρτήσεις:
συνθ εκφράζω = απαιτώ('εξπρές')
συνθ συνεδρία = απαιτώ(«εξπρές»)
app = express()
Στη συνέχεια, καταχωρήστε το ενδιάμεσο λογισμικό περιόδου λειτουργίας. Περάστε σε ένα αντικείμενο με το μυστικό ιδιοκτησία (για την υπογραφή του cookie ID συνεδρίας) και το cookie.
app.use(
συνεδρία({
μυστικό: "κάποιο μυστικό",
cookie: { maxAge: 30000 },
save Unitialized: ψευδής,
})
);
Εδώ ορίζετε τη μέγιστη ηλικία της συνεδρίας στα 30 δευτερόλεπτα (30000 χιλιοστά του δευτερολέπτου). Η ρύθμιση του saveUnitialized σε false είναι απαραίτητη εάν διαθέτετε σύστημα σύνδεσης. Εάν δεν το κάνετε, ο διακομιστής σας θα δημιουργεί ένα νέο session ID κάθε φορά που ο χρήστης στέλνει ένα αίτημα.
Στη συνέχεια, δημιουργήστε μια διαδρομή σύνδεσης για να αλλάξετε τη συνεδρία. Όταν ένας χρήστης φτάσει σε αυτήν τη διαδρομή, αναμένετε από τον πελάτη να στείλει το όνομα χρήστη και τον κωδικό πρόσβασης στο σώμα αιτήματος. Αρχικά, αποκτάτε πρόσβαση σε αυτές τις τιμές και ελέγχετε αν υπάρχουν (και εάν ο χρήστης έχει επικυρώσει):
app.post("/Σύνδεση", (απαιτ., ανταπ.) => {
συνθ { όνομα χρήστη, κωδικός πρόσβασης } = req.body;
αν (όνομα χρήστη κωδικός) {
αν (req.session.authenticated) {
res.json (συνεδρία);
} αλλού {
αν (Κωδικός πρόσβασης "123") {
req.session.authenticated = αληθής;
req.session.user = { όνομα χρήστη };
res.json (req.session);
} αλλού {
res.status(403).json({ μήνυμα: "Ασχημες συστάσεις" });
}
}
} αλλού {
res.status(403).json({ μήνυμα: "Ασχημες συστάσεις" });
}
});
Με την πρώτη δήλωση if, εκτελείτε έναν εικονικό έλεγχο. Αυτός ο έλεγχος είναι για να βεβαιωθείτε ότι συνεχίζετε μόνο εάν υπάρχουν το όνομα χρήστη και ο κωδικός πρόσβασης.
Στη συνέχεια, ελέγχετε εάν ο χρήστης έχει ήδη πιστοποιηθεί. Εάν ναι, στείλτε τη συνεδρία πίσω στον πελάτη. Εάν όχι, ορίστε την ιδιότητα με έλεγχο ταυτότητας σε true και αποθηκεύστε το όνομα χρήστη στη συνεδρία. Στη συνέχεια, στείλτε το πίσω στον πελάτη.
Με τον παραπάνω κωδικό, ο διακομιστής θα θυμάται κάθε χρήστη που στέλνει ένα αίτημα στον διακομιστή. Αυτό οφείλεται στο γεγονός ότι έχουν επικυρωθεί και έχουν αποθηκευτεί τα μοναδικά τους στοιχεία (όνομα χρήστη και κωδικός πρόσβασης) στη συνεδρία.
Ξεκινήστε τον διακομιστή σας προσθέτοντας τον ακόλουθο κώδικα στο κάτω μέρος του App.js:
app.listen(3000, () => {
κονσόλα.κούτσουρο("Ο διακομιστής λειτουργεί στη θύρα 3000");
});
Για να δοκιμάσετε αυτήν τη διαδρομή, χρησιμοποιήστε έναν πελάτη API για να στείλετε ένα αίτημα στη διαδρομή σύνδεσης που δημιουργήσατε. Φροντίστε να στείλετε το όνομα χρήστη και τον κωδικό πρόσβασης στο σώμα του αιτήματος. Δείτε πώς θα ήταν το αίτημά σας API εάν χρησιμοποιούσατε το Rest Client:
ΑΝΑΡΤΗΣΗ http://localhost: 3000/login HTTP/1.1
Τύπος περιεχομένου: "application/json"
{ όνομα χρήστη: "Kingsley", Κωδικός πρόσβασης: "123"}
Εάν όλα πάνε καλά, θα λάβετε το ακόλουθο αντικείμενο:
{
"κουλουράκι": {
"originalMaxAge": 30000,
"http Μόνο": αληθής,
"μονοπάτι": "/"
},
"επικυρωμένη": αληθής,
"χρήστης": {
"όνομα χρήστη": "Kingsley",
"Κωδικός πρόσβασης": "123"
}
}
Με αυτόν τον κωδικό έχουν συμβεί δύο πράγματα. Πρώτον, κάνατε έλεγχο ταυτότητας στον διακομιστή. Δεύτερον, η συνεδρία έχει πλέον τα στοιχεία σύνδεσής σας, οπότε ο διακομιστής ξέρει πλέον ποιος είστε. Κάθε φορά που στέλνετε ένα νέο αίτημα, θα σας θυμάται μέχρι να λήξει η περίοδος λειτουργίας και ο διακομιστής να το καταργήσει.
Οι συνεδρίες βελτιώνουν την εμπειρία χρήστη
Οι συνεδρίες αποτελούν ζωτικό μέρος των εφαρμογών Node.js. Αυτό συμβαίνει επειδή σας επιτρέπουν να διατηρείτε μια κατάσταση αλληλεπίδρασης σε πολλά αιτήματα και απαντήσεις. Οι συνεδρίες είναι ιδιαίτερα σημαντικές για εφαρμογές που χρειάζονται να συνδεθείτε.
Χρησιμοποιήστε περιόδους σύνδεσης στην εφαρμογή υποστήριξης για να παρακολουθείτε δεδομένα για συγκεκριμένους χρήστες. Ένα παράδειγμα τέτοιων δεδομένων είναι τα στοιχεία που έχει προσθέσει ο χρήστης σας σε ένα καλάθι αγορών.
Χωρίς περιόδους σύνδεσης, θα πρέπει να διατηρείτε ξεχωριστό χώρο αποθήκευσης δεδομένων για κάθε χρήστη στην εφαρμογή σας. Αυτό θα ήταν αναποτελεσματικό και θα αύξανε την πολυπλοκότητα της εφαρμογής.
Το Express.js Απλοποιεί τις περιόδους σύνδεσης, τη δρομολόγηση και άλλα
Το Express.js είναι το πιο δημοφιλές πλαίσιο web Node.js που χρησιμοποιείται αυτήν τη στιγμή. Παρέχει πολλά εργαλεία και βιβλιοθήκες για τη δημιουργία εφαρμογών υποστήριξης, και η βιβλιοθήκη express-session είναι μόνο ένα από αυτά.
Εάν θέλετε να χρησιμοποιήσετε το Node.js για την ανάπτυξη ιστού υποστήριξης, τότε ρίξτε μια ματιά στο Express.