تمرير معلومات مصادقة ملخص Apache2 إلى برنامج نصي wsgi يتم تشغيله بواسطة mod_wsgi

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

سؤال

لقد حصلت على التوجيه

<VirtualHost *>
    <Location />
        AuthType Digest
        AuthName "global"
        AuthDigestDomain /
        AuthUserFile /root/apache_users
        <Limit GET>
            Require valid-user
        </Limit>
    </Location>
    WSGIScriptAlias / /some/script.wsgi
    WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
    WSGIProcessGroup mywsgi
    ServerName some.example.org
</VirtualHost>

أود أن أعرف في /some/script.wsgi

def application(environ, start_response):
    start_response('200 OK', [
        ('Content-Type', 'text/plain'),
    ])
    return ['Hello']

ما هو المستخدم الذي قام بتسجيل الدخول.

كيف يمكنني فعل ذلك؟

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

المحلول

يضيف WSGIPassAuthorization On:

<VirtualHost *>
    <Location />
        AuthType Digest
        AuthName "global"
        AuthDigestDomain /
        AuthUserFile /root/apache_users
        <Limit GET>
            Require valid-user
        </Limit>
    </Location>
    WSGIPassAuthorization On
    WSGIScriptAlias / /some/script.wsgi
    WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
    WSGIProcessGroup mywsgi
    ServerName some.example.org
</VirtualHost>

ثم اقرأ فقط environ['REMOTE_USER']:

def application(environ, start_response):
    start_response('200 OK', [
        ('Content-Type', 'text/plain'),
    ])
    return ['Hello %s' % environ['REMOTE_USER']]

مزيد من المعلومات في وثائق mod_wsgi.

نصائح أخرى

يمكن العثور على معلومات إضافية حول Apache/mod_wsgi وآليات الوصول والمصادقة والترخيص في:

http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms

لا يتم تمرير المعلومات بشكل افتراضي لأن القيام بذلك قد يؤدي إلى تسرب معلومات كلمة المرور إلى التطبيقات التي ربما لا ينبغي لها الحصول عليها.

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