2015-07-21 41 views
0

我有一個需要CSRF令牌每次調用一個簡單的AJAX請求,我定義它,像這樣:我怎麼可以在ngResource設置的默認參數去進行後期

app.factory('auth', ['$resource', '$cookies', function($resource, $cookies){ 

    var getCsrf = function() { 
     //get csrf token from cookie 
    }; 

    return { 
     login: $resource('auth/login', {}, { 
       'q' : { 
        method: 'POST', 
        params: {csrf_token: getCsrf()} 
       } 
      }), 
     // ... some more requests 
    }; 
}]); 

我的理解它,你可以指定默認url參數作爲第二參數的$resource() -call,在我的情況下是空對象{}。顯然,我在params: ...下配置對象中設置的數據也通過GET發送,而不是通過指定的POST方法發送。

一種方法是手動將csrf_token放在我要調用api函數的地方,但我想保持它乾淨。有沒有辦法告訴哪些方法用於默認參數?所以我可以簡單地使用..

auth.login.q(email, password, ...).then(...); 

..不必在我所有的調用中實現csrf-getter函數。另外我對AngularJS比較新,所以一個簡單的答案會很棒!

+1

您可以製作資源包裝。 – Rob

回答

0

在角度上有一個簡單的方法: 在配置模塊中設置xsrf cookie名稱和標題名稱默認值。

app.config(['$httpProvider', function($httpProvider) { 
    // response cookie name 
    $httpProvider.defaults.xsrfCookieName = 'csrf_cookie'; 
    // request header name where the value of the cookie get set 
    $httpProvider.defaults.xsrfHeaderName = 'HTTP_X_XSRF_TOKEN'; 

    // to set ajax request header 
    $httpProvider.defaults.headers.common = { 'X-Requested-With' : 'XMLHttpRequest'}; 
} 
相關問題