2017-08-01 32 views
1

我有這個登錄服務:如何使用angularjs從登錄服務獲取全局特定url的標頭?

var url = GetHostUrl.cvmUrl+'/WSUser/users/login'; 
$http({ 
    method : 'POST', 
    url  : url, 
    data : $.param({ 
      username:$scope.user_name, 
      password:$scope.pass, 
      domain: GetHostUrl.cvmServerUpdated 
    }), 
    headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
}) 
.success(function(data){ 
    $localstorage.authtoken = data.authtoken; 
} 

不得不在頭傳遞$localstorage.authtoken全球範圍內爲特定的URL。

回答

0

創建一個服務來進行HTTP調用並使用該服務來獲取$ http對象。

您可以根據自己的需要在一個地方處理請求

您的服務代碼將是這樣的

HTTPService={} 
HTTPService.method=""; 
HTTPService.url=""; 
HTTPService.headers={} 
//modify the headers over here 
HTTPService.call=function(){ 
return $http({ 
    method : HTTPService.method, 
    url  : HTTPService.url, 
)} 
} 
return HTTPService; 

,並使用該服務的調用方法,以使在您的應用程序調用。

如果此代碼不清楚,我也可以發佈完全相同的代碼。

我建議你自己創建。 因此,您的登錄服務可以使用HTTPService服務進行http調用,以便方法體位於同一位置。

要求

+0

我已經爲所有url設置了標題屬性。我必須爲標題添加一個公共屬性到特定的URL – Idris

+0

,因此通過覆蓋默認值常見服務並進行** http **調用來相應地更改標題。 您的LoginService將擴展HTTPService並使用HTTPService.call方法進行http調用 –

2

有在AngularJs攔截所有的請求和響應的功能,您可以覆蓋值的特定網址,這些都是可以爲您做一個HTTP請求或當您收到之前被觸發掛鉤一。您可以將Auth頭添加到請求中,並且您的請求應該成功。

有關Angular Interceptors的更多信息

+0

實際上,登錄服務在其他控制器中,從登錄服務獲取數據後必須將響應注入到其他控制器。即app.js.在app.js中,它首先在從登錄服務獲取響應之前加載。 – Idris

+0

是否使用ui- router? –

+0

是的,我正在使用UI路由器 – Idris

相關問題