البرمجة

ضمان تسجيل الدخول في تطبيق Flask

عند النظر إلى الكود البرمجي الذي قدمته، نجد أن هناك دالة مزينة (decorated function) تُسمى decorated_function. هذه الدالة تقوم بتنفيذ عمل محدد بعد فحص شرط معين. لفهم دور الشرط، دعنا نحلل السطور التي تحتوي على هذا الشرط:

python
if not flask.g.auth.logged_in: flask.flash('Login required', 'errors') return flask.redirect(flask.url_for('login_fedora', next=flask.request.url))

بشكل عام، يقوم الشرط بفحص ما إذا كان المستخدم قد قام بتسجيل الدخول أم لا. إذا كان المستخدم لم يقم بتسجيل الدخول (الشرط not flask.g.auth.logged_in يعني أن المتغير logged_in في كائن flask.g.auth ليس True)، فيتم تنفيذ الخطوات التالية:

  1. flask.flash('Login required', 'errors'): يتم إضافة رسالة تنبيه إلى الـ Flash message بعنوان ‘errors’ تُخبر المستخدم بأنه يجب تسجيل الدخول.

  2. return flask.redirect(flask.url_for('login_fedora', next=flask.request.url)): يتم توجيه المستخدم إلى صفحة تسجيل الدخول، ويتم تضمين الرابط الذي حاول المستخدم الوصول إليه (من خلال next=flask.request.url) ليعود إليه بعد تسجيل الدخول.

ببساطة، هذا الشرط يحمي الدالة المزينة لضمان أن المستخدم قد قام بتسجيل الدخول قبل تنفيذ العمل المحدد في الدالة.

المزيد من المعلومات

بالطبع، دعونا نوسع على فهم الشرط if not flask.g.auth.logged_in ونقدم مزيدًا من المعلومات.

في السياق الخاص بهذا الشرط، يُستخدم flask.g لتخزين المتغيرات العامة (global variables) خلال دورة حياة الطلب (request lifecycle) في تطبيق Flask. تُستخدم لتخزين معلومات الجلسة والمتغيرات الأخرى التي يمكن الوصول إليها عبر كل جزء من التطبيق.

في هذا السياق، يبدو أن هناك كائنًا يُسمى auth داخل flask.g، والتحقق من ما إذا كان المستخدم قد قام بتسجيل الدخول يتم من خلال فحص قيمة logged_in في هذا الكائن. إذا كانت القيمة True، فإن ذلك يعني أن المستخدم قد قام بتسجيل الدخول، وبالتالي يتم تنفيذ العمل الذي يتبع الشرط. وإذا كانت القيمة False، فإن الشرط يُحدد أن المستخدم لم يقم بتسجيل الدخول، ويتم توجيهه إلى صفحة تسجيل الدخول.

هذا النوع من الرمز يعزز أمان التطبيق عبر فحص حالة تسجيل الدخول قبل السماح بالوصول إلى محتوى معين أو تنفيذ إجراءات حساسة.

زر الذهاب إلى الأعلى