2016-05-07 4 views
1

Ich möchte eine neue REST-Methode für mein Anmeldesystem erstellen, wo ich Benutzeranmeldeinformationen in einer benutzerdefinierten Kopfzeile angeben. Wie kann ich es mit AngularJS/ng-Ressource machen? Ich habe den folgenden Code ausprobiert, aber das Problem ist, wenn ich versuche, den Benutzernamen/das Passwort aus den Formularen ($ scope.vm.username) zu bekommen. Dies gibt mir 'undefiniert', wenn ich es in den Header-Setups mache.

angular.module('BkSystemApp.controllers', ['ngResource']) 

.controller('LoginController', function($scope, $location, $resource){ 
    //init 
    $scope.vm = {}; 

    function getUserCredentials(){ 
     return ($scope.vm.username + ':' + $scope.vm.password) 
    } 

    //resources 
    var Authentication = $resource('/users/authentication',{},{ 
     login:{ 
      method: 'GET', 
      isArray: false, 
      headers: {'Authentication':btoa(getUserCredentials())} 
     } 
    }); 

    //HTTP methods 
    $scope.login = function(){ 
     Authentication.login(function(data){ 

     });  
    }; 
}) 

Antwort

0

das $resource.login Verfahren des Header-String an Methodenaufruf Zeit berechnen, haben, muss der Header einen Header configuation Eigenschaft mit einem Wert haben, der eine Funktion Deklaration ist, kein Funktionsaufruf.

//resources 
var Authentication = $resource('/users/authentication',{},{ 
    login:{ 
     method: 'GET', 
     isArray: false, 
     //USE function declaration 
     headers: { 
      'Authentication': 
       function() { 
        return btoa(getUserCredentials()) 
       } 
     } 
     //NOT function invocation 
     //headers: {'Authentication':btoa(getUserCredentials())} 
    } 
}); 

diese Weise wird der Authentication Wert wird jedes Mal, wenn die login Methode aufgerufen wird, berechnet werden.

HINWEIS: Es ist nicht ratsam, Benutzername und Passwort in der Kopfzeile einer XHR GET-Anfrage zu senden.

+1

Lösung funktionierte, aber ich schätze, ich werde den Benutzernamen und das Passwort in einem POST-Körper stattdessen senden. – FlowerPower1990

Verwandte Themen