تخطَّ إلى المحتوى

🔌 شرح REST APIs

الصلاحيات (Authorization)

الدرس 15 من 25· ⏱ 1 دقائق قراءة

مصادقة مقابل صلاحيات

  • المصادقة (Authentication): مَن أنت؟
  • الصلاحيات (Authorization): ماذا يُسمح لك؟

التحقّق حسب الدور

function requireRole(role) {
  return (req, res, next) => {
    if (req.user.role !== role) {
      return res.status(403).json({ error: "ممنوع" });
    }
    next();
  };
}

app.delete("/users/:id", auth, requireRole("admin"), deleteUser);

💡 401 = لم تسجّل الدخول، 403 = سجّلت لكن لا صلاحية.

التحقّق حسب الملكية

تأكّد أن المستخدم يعدّل بياناته فقط:

app.patch("/posts/:id", auth, async (req, res) => {
  const post = await getPost(req.params.id);
  if (post.authorId !== req.user.userId) {
    return res.status(403).json({ error: "ليست منشوراتك" });
  }
  // ... التحديث
});

أفضل الممارسات

  • مبدأ أقلّ صلاحية افتراضيًّا.
  • تحقّق على الخادم دائمًا (لا تثق بالعميل).

🎯 التالي: التحقّق من المدخلات.

هل كان هذا الدرس مفيدًا؟