احراز هویت (Authentication) 🔐
چطور بفهمیم کی به کیه و به هر کسی اجازه دسترسی ندیم!
چرا احراز هویت مهمه؟
یه سری از اطلاعات ما عمومی هستن و همه میتونن ببینن. ولی یه سری اطلاعات خصوصیان و فقط باید کاربرای خاصی بهشون دسترسی داشته باشن (مثلاً اطلاعات پروفایل کاربری). احراز هویت یعنی مطمئن بشیم کسی که داره درخواست میده، همون کسیه که ادعا میکنه.
روش اول: کلید API (API Key)
سادهترین روشه. به هر کلاینت یا اپلیکیشنی که میخواد از API ما استفاده کنه، یه کلید منحصر به فرد میدیم. اونم باید تو هر درخواست، این کلید رو تو هدر (Header) یا کوئری استرینگ (Query String) بفرسته. ما هم چک میکنیم اگه کلید معتبر بود، بهش جواب میدیم.
// این یک Middleware در Express است
function authenticate(req, res, next) {
const apiKey = req.header('x-api-key'); // کلید رو از هدر میخونیم
const validApiKey = 'MY_SECRET_API_KEY'; // کلید معتبر ما
if (apiKey && apiKey === validApiKey) {
next(); // اگه کلید درست بود، برو مرحله بعد
} else {
res.status(401).json({ error: 'Unauthorized' }); // اگه نبود، خطای 401
}
}
// استفاده از Middleware برای یک روت خاص
app.get('/api/private-data', authenticate, (req, res) => {
res.json({ data: 'این اطلاعات خیلی محرمانه است!' });
});
روش دوم: توکن JWT
JWT (JSON Web Token) یه روش مدرن و خیلی امنه. وقتی کاربر لاگین میکنه، سرور یه توکن امضا شده بهش میده. کاربر این توکن رو ذخیره میکنه و تو هر درخواست بعدی، تو هدر `Authorization` میفرسته. سرور با چک کردن امضای توکن، میفهمه که کاربر کیه و به چه چیزهایی دسترسی داره.