2010-05-25 12 views
24

तो मैं जो निम्नलिखित हैडर सेट है PHP में एक इनकमिंग अनुरोध को पार्स करने के लिए कोशिश कर रहा हूँ:ला रहा है कस्टम प्राधिकरण हैडर

Authorization: Custom Username 

सरल प्रश्न: कैसे पृथ्वी पर मैं इस पर मेरे हाथ मिलता है ? अगर यह Authorization: Basic था, तो मैं उपयोगकर्ता नाम $_SERVER["PHP_AUTH_USER"] से प्राप्त कर सकता था। अगर यह X-Custom-Authorization: Username था, तो मैं उपयोगकर्ता नाम $_SERVER["HTTP_X_CUSTOM_AUTHORIZATION"] से प्राप्त कर सकता था। लेकिन इनमें से कोई भी कस्टम प्राधिकरण द्वारा सेट नहीं किया गया है, var_dump($_SERVER) में हेडर का कोई उल्लेख नहीं है (विशेष रूप से, AUTH_TYPE गुम है), और get_headers() जैसे PHP5 फ़ंक्शंस केवल आउटगोइंग अनुरोधों के जवाबों पर काम करते हैं। मैं अपाचे पर PHP 5 चला रहा हूं जिसमें बॉक्स के बाहर उबंटू इंस्टॉल है।

उत्तर

35

यदि आप केवल अपाचे का उपयोग करने जा रहे हैं तो आप apache_request_headers() पर एक नज़र डालना चाहते हैं।

+0

वर्क्स का उपयोग कर, धन्यवाद द्वारा प्राधिकरण कोड प्राप्त! – jpatokal

+0

@ अर्धदान: अन्यथा? मैं nginx का उपयोग कर रहा हूं और मैं हेडर में प्रमाणीकरण प्राप्त करने में असमर्थ हूं। – Divakarcool

32

टोकन आधारित प्रमाणन के लिए:

$token = null; 
    $headers = apache_request_headers(); 
    if(isset($headers['Authorization'])){ 
    $matches = array(); 
    preg_match('/Token token="(.*)"/', $headers['Authorization'], $matches); 
    if(isset($matches[1])){ 
     $token = $matches[1]; 
    } 
    } 
6

पृष्ठभूमि के लिए, क्यों अपाचे दूर फिल्टर Authorization हैडर: https://stackoverflow.com/a/17490827

आधार पर समाधान जिस पर अपाचे मॉड्यूल आवेदन करने के लिए अनुरोध पारित करने के लिए प्रयोग किया जाता है:

mod_wsgi, mod_fcgid:

cgi:

अन्य हैक्स - इस सवाल में हेडर की मालिश:

5

अपने .htaccess

RewriteEngine On 
RewriteRule .* - [e=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

में यह कोड जोड़ें Authorization: {auth_code} की तरह अपने हैडर दर्रा और अंत में आप खूबसूरती से $_SERVER['HTTP_AUTHORIZATION']

संबंधित मुद्दे