جانغو توريد بيانات اعتماد تسجيل الدخول في أي عرض ورل

StackOverflow https://stackoverflow.com//questions/12665721

  •  11-12-2019
  •  | 
  •  

سؤال

هل هناك أي طريقة في جانغو لأداء تسجيل الدخول باستخدام بيانات الاعتماد المقدمة أثناء الوصول إلى أي عرض في التطبيق?

حافزي هنا هو مراقبة التوافر باستخدام خدمة مثل بينغدوم.زينت معظم عناوين المواقع أريد أن التحقق من توافرها مع @login_required مما يجعل من المستحيل الوصول إلا إذا قمت بتسجيل الدخول مسبقا.

سيكون حل فكرتي وسيلة للوصول إلى وجهات نظري أثناء توفير بيانات الاعتماد في معلمات جيت أو بوست.قد يكون البديل الآخر هو خدمة مراقبة وقت تشغيل الموقع التي تدعم تسجيل الدخول والحصول على جلسة قبل الوصول إلى عنوان ورل المعني.

تحديث

بفضل الاتجاه فيليب دوبانوفيć ورمز من هنا بلدي الوسيطة العمل بسيطة تبدو مثل هذا:

from django.contrib.auth import authenticate, login

class AuthenticationEverywhereMiddleware(object):
    """
    Middleware to allow logging in by supplying login credentials in any URL
    """

    def process_request(self, request):
        if (request.GET.get('authenticateEverywhere','') == 'GET'):
            username = request.GET['username']
            password = request.GET['password']
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    login(request, user)

لقد أضفت المعلمة اثار authenticateEverywhere لمنع أي اشتباكات محتملة مع وجهات النظر التي قد تستخدم username أو password المعلمات.

هل كانت مفيدة؟

المحلول

يمكنك بالتأكيد!ستحتاج إلى كتابة مخصص فئة الوسيطة التي تنفذ العرف process_request طريقة حيث ستتمكن من فحص كائن الطلب ، والحصول على بيانات الاعتماد وتسجيل دخول المستخدم قبل توجيه الطلب إلى طريقة عرض مزينة بـ login_required.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top