2013-01-06 13 views
46

में अनुप्रयोग विस्तृत HTTP शीर्षलेख सेट करना angular.module('myApp', []).config() के बाहर $httpProvider शीर्षलेख सेट करने का कोई तरीका है?AngularJS

मुझे उपयोगकर्ता लॉगिन करने के बाद सर्वर से ऑथ-टोकन मिल रहा है, और मुझे इसे निम्नलिखित सभी अनुरोधों के लिए HTTP शीर्षलेख के रूप में जोड़ने की आवश्यकता है।

उत्तर

39
$http.defaults.headers.common['Auth-Token'] = 'token'; 

ऐसा लगता है कि headers() प्रमुख नामों को सामान्यीकृत करता है।

+3

क्या आप मुख्य नामों को सामान्य करके अपना मतलब बता सकते हैं? – Webnet

+4

हेडर() विधि का उपयोग कर हेडर प्राप्त करते समय, कुंजी "ऑथ-टोकन" कम हो जाती है और "ऑथ-टोकन" बन जाती है। जो भ्रमित है। – lucassp

+0

@lucassp यह हो सकता है - http://stackoverflow.com/questions/5258977/are-http-headers-case- संवेदनशील – KrIsHnA

65

आप कोणीय 1.0.x के लिए डिफ़ॉल्ट हेडर का उपयोग कर सकते हैं:

$http.defaults.headers.common['Authentication'] = 'authentication'; 

या कोणीय 1.1.x + के लिए अनुरोध इंटरसेप्टर:

myapp.factory('httpRequestInterceptor', function() { 
    return { 
    request: function (config) { 

     // use this to destroying other existing headers 
     config.headers = {'Authentication':'authentication'} 

     // use this to prevent destroying other existing headers 
     // config.headers['Authorization'] = 'authentication'; 

     return config; 
    } 
    }; 
}); 

myapp.config(function ($httpProvider) { 
    $httpProvider.interceptors.push('httpRequestInterceptor'); 
}); 

के बाद से कारखानों/सेवाओं एकमात्र, इस कर रहे हैं तब तक काम करता है जब तक सेवा को तत्काल नहीं किया जाता है, आपको अपने 'प्रमाणीकरण' मूल्य को गतिशील रूप से बदलने की आवश्यकता नहीं होती है।

+0

मुझे यह एक सेवा के रूप में पसंद है। धन्यवाद! – grant

+2

थोड़ा उलझन में। मैं इसे अपने ऐप में कैसे एकीकृत करूं? क्या मुझे निर्भरता के रूप में सूचीबद्ध करने की आवश्यकता है और फिर '$ http' के बजाय '$ httpProvider' का उपयोग करें? –

+0

अपनी कॉन्फ़िगरेशन विधि में $ httpProvider इंजेक्ट करें जो आपके ऐप मॉड्यूल से लटका हुआ है। प्रदाता आपके नियंत्रकों आदि में कोणीय द्वारा इंजेक्शन से पहले सेवाओं को कॉन्फ़िगर करने का एक तरीका हैं। – Greg

1

@Guria और @Panga

config.headers['X-Access-Token'] = $window.sessionStorage.token; 

एक के ऊपर प्रतिक्रियाओं को जोड़ना जेडब्ल्यूटी (jsonwebtoken) के रूप में शीर्षक में एक्स-पहुँच-टोकन का उपयोग कर सकते हैं। जब उपयोगकर्ता पहली बार प्रमाणित करता है तो मैं सत्र संग्रहण में जेडब्ल्यूटी स्टोर करता हूं।