محتويات الدورة

Next.js / المتوسط: السلطة والحداثة وتجربة المسار / الدرس 8

الجلسات والوصول الخادمي وسياسة الكائن

حل السلطة الحالية في الخادم واحم كل طريق إلى بيانات خاصة أو كتابة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • افصل نقل ملف الارتباط والجلسة المتحقق منها وهوية المستدعي الحالية.
  • احفظ أهلية البيانات في طبقة خادمية مشتركة بدلاً من بوابة تنقل.

ملف الارتباط الوارد ادعاء اعتماد يحتاج تحققاً

تبقى قيمة الملف إدخالاً حتى يتحقق البروتوكول ويبني السلطة الحالية. يمنع وسم server-only استيراداً عرضياً ولا يصادق أو يقرر الوصول. استخدم حلاً مراجعاً بانتهاء وإلغاء وتدوير، وأبعد السر عن الخصائص والعنوان والسجل. قد يصبح الدور المخزن قديماً بعد تغيير الامتياز فحدد دليل السياسة للعمل الحساس. لا تعد التصيير أو إخفاء التنقل حماية للفعل أو المعالج المباشر. يجب أن يبقى قرار الخدمة صالحاً حتى إذا لم يفتح المستدعي الصفحة التي تعرض الزر أصلاً أو احتفظ بنموذج قديم بعد سحب صلاحيته.

انتظر cookies وتحقق من الاعتماد خلف حد خادمي

ينتظر الجزء cookies ويقرأ اسماً ويفوض التحقق. هو توضيح خادمي لا تنفيذ جلسة؛ يفرض verifyCredential البروتوكول والصلاحية والفشل الآمن، ولا يصبح الغائب ضيفاً ذا امتياز تلقائياً. تحتاج دالة البيانات فوق الهوية سياسة المستأجر والكائن. افصل آلية المصادقة بقدرة ضيقة بدلاً من قاعدة مضبوطة في كل موضع. لا يصل المقرر إلى ملف أو اعتماد أو قاعدة أو سياق طلب. يوضح المثال التسلسل الذي يجب ربطه واختباره لاحقاً ولا يثبت صحة توقيع أو استرداد جلسة أو رفض رمز منتهي.

typescript حد جلسة خادمي توضيحي
import "server-only";
import {cookies} from "next/headers";
export async function currentPrincipal() {
  const jar=await cookies();
  const credential=jar.get("session")?.value;
  return verifyCredential(credential);
}

التحقق اعتماد مراجع مفترض، ولم تنفذ قراءة cookies أو علامة server-only.

احم القوائم والبحث ونتائج الكتابة باتساق

قد يظهر المقرر عبر صفحة ومعالج ونتيجة فعل وقائمة علاقة. مركز الأهلية حتى لا يتجاوز تمثيل آخر بحثاً محمياً. تحدد معرفات المسار والمخفي النطاق المطلوب لا العضوية. قرر تشابه الممنوع والغائب للعامة واحفظ التشخيص داخلياً. أعد DTO ضيقة بعد السماح؛ لا يجعل استبعاد حقل إظهار وجود كائن ممنوع وعلاقاته آمناً. ينبغي أن يشمل الاختبار طريق القائمة والبحث الفردي مع المعرف نفسه، لأن صحة أحدهما لا تثبت أن الآخر يستعمل مساعد السياسة المشترك فعلاً.

اختبر المستأجر والحالة والانتهاء كشروط منفصلة

يسمح الشرط بقراءة مقرر منشور للمستأجر نفسه وقبل انتهاء الهوية، ويمنع عند الحد نفسه. قواعد مجال صغيرة لا تحقق تشفيري أو محرك تفويض كامل. قد تضيف العضوية والأدوار والإلغاء. اختبر نفي كل شرط بالكائن نفسه حتى لا يخفي نجاح واحد فشل الآخر. الوقت صريح ولا يستشار مخزن جلسة أو ملف أو ساعة خادم. يثبت ذلك قرار النموذج فقط؛ يجب أن يثبت الدمج كيف حصل على هوية موثوقة وموعد صحيح وكيف يتصرف إذا تعذر مصدر الإلغاء بدلاً من اختراع صلاحية مستمرة.

javascript قاعدة سلطة حالية محلية كاملة
function mayRead(principal,course,now) {
  return principal.tenantId === course.tenantId && course.state === "PUBLISHED" && now < principal.expiresAt;
}
const course={id:"c1",tenantId:"lab-a",state:"PUBLISHED"};
console.assert(mayRead({tenantId:"lab-a",expiresAt:1000},course,999));
console.assert(!mayRead({tenantId:"lab-b",expiresAt:1000},course,999));
console.assert(!mayRead({tenantId:"lab-a",expiresAt:1000},course,1000));

ينجح المؤهل غير المنتهي في الحالات المختبرة، دون فحص أصالة الاعتماد أو بنية الإلغاء.

وافق المخبأ وحالة العميل مع تغير الهوية

لا تحفظ المستخدم الحالي بحالة وحدة مشتركة متغيرة. يختلف حفظ التصيير عن مخبأ دائم؛ لا تشارك الشخصي بمفتاح ناقص. ينهي الخروج سلطة الخادم وحالة العميل الخاصة وفق التصميم لا زرّاً فقط. لا يملأ رد هوية سابقة عرض التالية. اختبر الأفعال والمعالجات والتخطيط وتبديل الحساب معزولاً مأذوناً. ينفذ المقرر الشرط فقط دون مصادقة أو cookies أو حفظ أو خروج أو تفويض حي. يحفظ هذا الفرق بين صحة قرار أهلية محلي وبين التأكد من أن جميع مداخل التطبيق تزوده بالهوية الحالية نفسها.

الأخطاء الشائعة وإصلاحها

تسمى علامة server-only مصادقة

لماذا يحدث؟
اختلطت حماية الاستيراد وقت البناء بسلطة مستدع متحقق منها.
كيف تصلحه؟
تحقق من الاعتماد وطبق سياسة الكائن بكل مدخل خادم.
كيف تتجنب تكراره؟
اختبر الأفعال والمعالجات باعتماد مخالف ومنتهٍ.

يمنح معامل المستأجر عضوية

لماذا يحدث؟
قبل النطاق الذي طلبه المستخدم باعتباره إذن وصول.
كيف تصلحه؟
قارن المطلوب بالهوية المتحقق منها وقواعد المجال.
كيف تتجنب تكراره؟
اختبر المعرف نفسه عبر مستأجر مسموح وآخر ممنوع.

يعرض الخروج بطاقة الحساب السابق

لماذا يحدث؟
لم تنسق أعمار سلطة الخادم ومخبأ العميل الخاص.
كيف تصلحه؟
أنه سلطة الجلسة وارفض النتائج المعلقة غير الموافقة للهوية.
كيف تتجنب تكراره؟
اختبر تبديل الحساب مع بقاء طلبات معلقة.

اختبر فهمك

1. هل تمنع server-only المستدعي من استدعاء Server Action؟

اعرض الحل المشروح

لا. تحمي العلامة حد الاستيراد، ويظل الفعل مدخل خادم يتحقق من الاعتماد الحالي والإدخال وانتقال الكائن. ضع السياسة في الحالة المشتركة حتى لا يتجاوزها موائم آخر، واختبر الاستدعاء المباشر لا الصفحة المحمية فقط.

2. لماذا تختبر التساوي مع الانتهاء واختلاف المستأجر كلّاً على حدة؟

اعرض الحل المشروح

هما سببان مستقلان للمنع. لا يعوض حد انتهاء صحيح عزل مستأجر مفقوداً، ولا يبقي المستأجر المطابق هوية منتهية صالحة. تظهر الحالتان الشرطين، ويثبت دمج المصادقة الحقيقي مستقلاً موثوقية القيم التي يقدمها للقرار.

أهم ما تعلمته

  • لا يفوض التنفيذ الخادمي أو علامة الاستيراد البيانات.
  • تحتاج السلطة الحالية والحالة الخاصة أعماراً منسقة.

المراجع الرسمية