1

Web uygulamasına drupal 7 dayanıyor ve REST kullanarak o web uygulamasına bağlı iyonik uygulama oluşturmak istiyorum.Drupal REST İyonik uygulamadan giriş yaptıktan sonra 301 geri dönüşü

Oturum açma eylemi iyi ama giriş yaptıktan sonra her zaman durumum var 301 REST'den ne olursa olsun, Permamently Taşındı.

Fakat ARC veya POSTMASTER kullanarak aynı şeyi yaptığımda her şey iyi çalışıyor. Oturum açmayı başarılı bir şekilde arayabilir, başarılı bir şekilde jeton alabilir ve herhangi bir sorun olmadan çıkış yapabilirim.

Sanırım neden üstbilgiyi düzgün ayarlanmamış. ARC veya POSTMASTER kullandığımda, isteğim session_name ile Cookie ve oturum sırasında drupal'dan alınan sessid'i içeriyor.
Ayrıca X-CSRF-Token'i başlığa ayarlayamıyorum.
Ancak, açısal olarak ayarlamaya çalıştığımda, istekte hiçbir değişiklik değişmez [başlıklar ayarlanmamış].

(açısal) iyonik My giriş kontrolörü:

iyonik (açısal) My çıkış kontrolör
var login = function(name, pw) {  
    return $q(function(resolve, reject) { 

     var data = "username="+name+"&password="+pw; 
     var config = { 
      headers : { 
       'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' 
      } 
     } 

     $http.post('http://example.com/user/login.json', data, config) 
      .then(
       function(response){ 
       // success callback 
       storeUserCredentials(name + '.' + response.data.token, response.data.session_name, response.data.sessid); 
       storeUserRole(response.data.user.roles); 

       resolve('Login success.'); 
       }, 
       function(response){ 
        // failure callback 
        //console.log('error '+response); 
        reject('Login Failed.'); 
       } 
     ); 

    }); 
}; 

:

var logout = function() { 

    var data = "username="+name+"&password="+pw; 
    var config = { 
     headers : { 
      'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 
      'X-CSRF-Token': token, 
      'Cookie':session_name + '=' + sessid 
     } 
    } 

    $http.post('http://example.com/user/logout.json', data, config) 
     .then(
      function(response){ 
       // success callback 
       destroyUserCredentials(); 
      }, 
      function(response){ 
       // failure callback 
       destroyUserCredentials(); 
     } 
    ); 
}; 

cevap

0

Bu teknik benim için çalışıyor

ben depolamak başlangıç ​​noktası olarak 'minimal' config nesnesi. Bu nesne aşağıdaki data olarak /services/session/token gelen yanıt kullanılarak oluşturulur: Çevrimiçi birçok örneklere

localStorageService.set('HTTP_CONFIG', { 
    headers: { 
     'Content-type': 'application/json', 
     'Accept': 'application/json', 
     'X-CSRF-Token': data 
    } 
}); 

aksine, ben gereksiz elle çerezleri ayarlamasına bulabilirsiniz. Aslında, çerezleri ayarlamaya çalışmak genellikle hatalarla sonuçlanır. Bu örnekte, http yapılandırmasının kopyalarını üretmek için yerel depolama alanını kullanacağım.


Sonraki, giriş yapıp yapmadığımı anlatayım.

var tokenConfig = localStorageService.get('HTTP_CONFIG'); 
tokenConfig.url = APP_CONFIG.REST_API + '/system/connect.json'; 
tokenConfig.method = 'POST'; 
tokenConfig.data = {}; 
$http(tokenConfig) ... 

Sadece Örneğin, bu şekilde ileriye taşımak: Sadece aynı ileri 'minimal' http yapılandırma nesnesini kullanarak taşırlar

var loginConfig = localStorageService.get('HTTP_CONFIG'); 
loginConfig.method = 'POST'; 
loginConfig.url = APP_CONFIG.REST_API + '/user/login'; 
loginConfig.data = { username: username, password: password }; 
$http(loginConfig) ... 

, gerektiği gibi özellikler ilave edilmesi. Bu benim için mükemmel çalıştı.