نحوه تنظیم سریع و آسان Sessions و Authentication در Express.js

Summarize this content to 400 words in Persian Lang
در Express.js، مدیریت جلسه و احراز هویت، ستون فقرات برنامه های کاربردی وب مدرن را تشکیل می دهند. آنها اطمینان می دهند که کاربران در چندین درخواست وارد سیستم می شوند و هویت آنها به طور ایمن تأیید می شود. این وبلاگ به نحوه پیادهسازی و بهینهسازی این فرآیندها با استفاده از Express.js با مثالهایی در دنیای واقعی برای یادگیری عملی میپردازد.
1. راه اندازی Session Management در Express.js
Sessions داده های خاص کاربر را بین درخواست های HTTP ذخیره می کند و برنامه های وب را پویا و حالت دار می کند. Express.js مدیریت جلسه را با میان افزار express-session ساده می کند.
مثال: پیکربندی اولیه جلسه
const express = require(‘express’);
const session = require(‘express-session’);
const app = express();
// Set up session middleware
app.use(
session({
secret: ‘yourSecretKey’, // Replace with a unique key
resave: false, // Avoid resaving unchanged sessions
saveUninitialized: false, // Only save sessions with initialized data
cookie: {
maxAge: 60000, // 1-minute session expiry
},
})
);
// Example route to demonstrate session usage
app.get(‘/’, (req, res) => {
if (!req.session.visits) req.session.visits = 0;
req.session.visits++;
res.send(`You have visited this page ${req.session.visits} times.`);
});
app.listen(3000, () => console.log(‘Server running on http://localhost:3000’));
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نکات کلیدی
راز: یک رشته منحصر به فرد برای امضای شناسه های جلسه.
cookie.maxAge: مشخص می کند که یک جلسه چه مدت باید ادامه داشته باشد.
saveUinitialized: با اجتناب از ذخیرههای خالی جلسه، عملکرد را بهبود میبخشد.
2. اجرای احراز هویت با Passport.js
احراز هویت برای تأیید هویت کاربر حیاتی است. Express.js به طور یکپارچه با میان افزار پاسپورت برای استراتژی های مختلف از جمله احراز هویت محلی کار می کند.
مثال: احراز هویت محلی با Passport.js
const passport = require(‘passport’);
const LocalStrategy = require(‘passport-local’).Strategy;
// Mock user data
const users = [{ id: 1, username: ‘admin’, password: ‘password’ }];
// Set up Passport’s local strategy
passport.use(
new LocalStrategy((username, password, done) => {
const user = users.find((u) => u.username === username);
if (!user) return done(null, false, { message: ‘User not found’ });
if (user.password !== password) return done(null, false, { message: ‘Invalid password’ });
return done(null, user);
})
);
// Serialize and deserialize user
passport.serializeUser((user, done) => done(null, user.id));
passport.deserializeUser((id, done) => {
const user = users.find((u) => u.id === id);
done(null, user);
});
// Add middleware
app.use(passport.initialize());
app.use(passport.session());
// Login route
app.post(
‘/login’,
passport.authenticate(‘local’, {
successRedirect: ‘/dashboard’,
failureRedirect: ‘/login’,
})
);
// Protected route
app.get(‘/dashboard’, (req, res) => {
if (!req.isAuthenticated()) return res.redirect(‘/login’);
res.send(`Welcome, ${req.user.username}!`);
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. Session Stores برای مقیاس پذیری
استفاده از جلسات درون حافظه (پیش فرض در توسعه) برای تولید نامناسب است. در عوض، از یک فروشگاه جلسه مانند Redis یا MongoDB برای مقیاس پذیری استفاده کنید.
مثال: ذخیره Sessions در MongoDB
const MongoStore = require(‘connect-mongo’);
const session = require(‘express-session’);
// Use MongoDB as session store
app.use(
session({
secret: ‘yourSecretKey’,
resave: false,
saveUninitialized: false,
store: MongoStore.create({
mongoUrl: ‘mongodb://localhost:27017/session-db’,
collectionName: ‘sessions’,
}),
cookie: { maxAge: 3600000 }, // 1 hour
})
);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چرا از Session Store استفاده کنیم؟از سرریز حافظه در محیط های تولیدی جلوگیری می کند.از سیستم های توزیع شده پشتیبانی می کند که در آن جلسات در چندین سرور ادامه دارد.
4. بهینه سازی جلسه و گردش کار احراز هویت
ترکیب مدیریت جلسه و احراز هویت، تجربه کاربری روان را تضمین می کند.
مثال: عملکرد خروج
app.post(‘/logout’, (req, res) => {
req.logout((err) => {
if (err) return next(err);
req.session.destroy(() => {
res.redirect(‘/login’);
});
});
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
نکات قابل تامل
از زمانهای انقضای جلسه معنادار بر اساس نیازهای برنامه استفاده کنید.
برای حفظ عملکرد، به طور منظم جلسات منقضی شده را از پایگاه داده پاک کنید.
جلسه تست و احراز هویت جریان می یابد تا اطمینان حاصل شود که موارد لبه مانند توکن های منقضی شده یا راه اندازی مجدد سرور را مدیریت می کنند.
تسلط بر مدیریت جلسه و احراز هویت در Express.js برای ساخت برنامه های قابل اعتماد و حالت دار ضروری است. با قدرت اکسپرس جلسه، پاسپورت و فروشگاه های جلسه خارجی، می توانید سیستم های احراز هویت مقیاس پذیر، کارآمد و کاربرپسند ایجاد کنید.
اگر این وبلاگ را مفید یافتید، برای نکات و ترفندهای جاوا اسکریپت، روی ❤️ لایک کنید و دنبال کنید!
در Express.js، مدیریت جلسه و احراز هویت، ستون فقرات برنامه های کاربردی وب مدرن را تشکیل می دهند. آنها اطمینان می دهند که کاربران در چندین درخواست وارد سیستم می شوند و هویت آنها به طور ایمن تأیید می شود. این وبلاگ به نحوه پیادهسازی و بهینهسازی این فرآیندها با استفاده از Express.js با مثالهایی در دنیای واقعی برای یادگیری عملی میپردازد.
1. راه اندازی Session Management در Express.js
Sessions داده های خاص کاربر را بین درخواست های HTTP ذخیره می کند و برنامه های وب را پویا و حالت دار می کند. Express.js مدیریت جلسه را با میان افزار express-session ساده می کند.
مثال: پیکربندی اولیه جلسه
const express = require('express');
const session = require('express-session');
const app = express();
// Set up session middleware
app.use(
session({
secret: 'yourSecretKey', // Replace with a unique key
resave: false, // Avoid resaving unchanged sessions
saveUninitialized: false, // Only save sessions with initialized data
cookie: {
maxAge: 60000, // 1-minute session expiry
},
})
);
// Example route to demonstrate session usage
app.get('/', (req, res) => {
if (!req.session.visits) req.session.visits = 0;
req.session.visits++;
res.send(`You have visited this page ${req.session.visits} times.`);
});
app.listen(3000, () => console.log('Server running on http://localhost:3000'));
نکات کلیدی
- راز: یک رشته منحصر به فرد برای امضای شناسه های جلسه.
- cookie.maxAge: مشخص می کند که یک جلسه چه مدت باید ادامه داشته باشد.
- saveUinitialized: با اجتناب از ذخیرههای خالی جلسه، عملکرد را بهبود میبخشد.
2. اجرای احراز هویت با Passport.js
احراز هویت برای تأیید هویت کاربر حیاتی است. Express.js به طور یکپارچه با میان افزار پاسپورت برای استراتژی های مختلف از جمله احراز هویت محلی کار می کند.
مثال: احراز هویت محلی با Passport.js
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
// Mock user data
const users = [{ id: 1, username: 'admin', password: 'password' }];
// Set up Passport's local strategy
passport.use(
new LocalStrategy((username, password, done) => {
const user = users.find((u) => u.username === username);
if (!user) return done(null, false, { message: 'User not found' });
if (user.password !== password) return done(null, false, { message: 'Invalid password' });
return done(null, user);
})
);
// Serialize and deserialize user
passport.serializeUser((user, done) => done(null, user.id));
passport.deserializeUser((id, done) => {
const user = users.find((u) => u.id === id);
done(null, user);
});
// Add middleware
app.use(passport.initialize());
app.use(passport.session());
// Login route
app.post(
'/login',
passport.authenticate('local', {
successRedirect: '/dashboard',
failureRedirect: '/login',
})
);
// Protected route
app.get('/dashboard', (req, res) => {
if (!req.isAuthenticated()) return res.redirect('/login');
res.send(`Welcome, ${req.user.username}!`);
});
3. Session Stores برای مقیاس پذیری
استفاده از جلسات درون حافظه (پیش فرض در توسعه) برای تولید نامناسب است. در عوض، از یک فروشگاه جلسه مانند Redis یا MongoDB برای مقیاس پذیری استفاده کنید.
مثال: ذخیره Sessions در MongoDB
const MongoStore = require('connect-mongo');
const session = require('express-session');
// Use MongoDB as session store
app.use(
session({
secret: 'yourSecretKey',
resave: false,
saveUninitialized: false,
store: MongoStore.create({
mongoUrl: 'mongodb://localhost:27017/session-db',
collectionName: 'sessions',
}),
cookie: { maxAge: 3600000 }, // 1 hour
})
);
چرا از Session Store استفاده کنیم؟
از سرریز حافظه در محیط های تولیدی جلوگیری می کند.
از سیستم های توزیع شده پشتیبانی می کند که در آن جلسات در چندین سرور ادامه دارد.
4. بهینه سازی جلسه و گردش کار احراز هویت
ترکیب مدیریت جلسه و احراز هویت، تجربه کاربری روان را تضمین می کند.
مثال: عملکرد خروج
app.post('/logout', (req, res) => {
req.logout((err) => {
if (err) return next(err);
req.session.destroy(() => {
res.redirect('/login');
});
});
});
نکات قابل تامل
- از زمانهای انقضای جلسه معنادار بر اساس نیازهای برنامه استفاده کنید.
- برای حفظ عملکرد، به طور منظم جلسات منقضی شده را از پایگاه داده پاک کنید.
- جلسه تست و احراز هویت جریان می یابد تا اطمینان حاصل شود که موارد لبه مانند توکن های منقضی شده یا راه اندازی مجدد سرور را مدیریت می کنند.
تسلط بر مدیریت جلسه و احراز هویت در Express.js برای ساخت برنامه های قابل اعتماد و حالت دار ضروری است. با قدرت اکسپرس جلسه، پاسپورت و فروشگاه های جلسه خارجی، می توانید سیستم های احراز هویت مقیاس پذیر، کارآمد و کاربرپسند ایجاد کنید.
اگر این وبلاگ را مفید یافتید، برای نکات و ترفندهای جاوا اسکریپت، روی ❤️ لایک کنید و دنبال کنید!