2016-07-11 14 views
0

Ich entwickle gerade eine kleine App mit angularJS; Die Benutzer müssen ein Login-Formular durchlaufen und dann können sie auf einige Links klicken, die Daten anzeigen, die von einem Server abgerufen werden.wie login info mit angularJS gespeichert wird

Das Login-Formular nimmt nur die Eingabe des Benutzers und wird dann „gespeichert“ in eine Fabrik

app.factory('IdFormHolder', function() { 
    var that = this; 

    that.setId = function (data) { 
     that = data; 

    }; 
    that.getId = function() { 
     return that; 
    }; 

    return that; 
}); 

die gut arbeitet Ich brauche es gespeichert zu halten, da der Server das Anmeldeformular erfordert jedes Mal gesendet werden Ich mache ein $ http.get als Header.

Jeder Controller nimmt das Anmeldeformular vom Hersteller und verwendet es, um die Daten vom Server zu erhalten.

Dies funktioniert gut, bis jemand sich entscheidet, die Seite zu aktualisieren. An diesem Punkt scheint die Fabrik aus ihrem Anmeldeformular "geleert" zu werden, und die Web-App zeigt dann nichts an.

Gibt es eine Möglichkeit, diese Anmeldeinformationen so zu speichern, dass sie nicht so leicht gelöscht werden?

+1

Sie müssen es speichern mit session Modul von angular.Download und docs sind hier: http: // ngmodules.org/modules/ngStorage –

+1

Sie können einfach Informationen in Browser LocalStorage –

Antwort

2

Sie diesen Code verwenden können, nachdem youve session installiert:

app.factory('IdFormHolder', ['$sessionStorage', function ($sessionStorage) { 
    var that = this; 

    that.setId = function (data) { 
     $sessionStorage.id = data; 
     that = data; 

    }; 
    that.getId = function() { 
     return $sessionStorage.id; 
    }; 

    return that; 
}]); 

Download Link: https://github.com/gsklee/ngStorage

+0

Dank, scheint einfach genug für mich –

+0

scheint ich muss var vor dem = dieses hinzufügen; und sessionStrorage in Abhängigkeitsinjektionen –

0

Um Daten zu beharren würden Sie irgendeine Art von lokaler DB verwenden || LocalStorage || SessionStorage mindestens. Wenn Sie die Factory initialisieren, können Sie diese Daten überprüfen und versuchen, sie aus der DB/LS abzurufen und als Variable zu speichern, falls sie existiert.

So etwas wie

app.factory('IdFormHolder', function() { 
    this.heldId = attemptToGetSavedDataFromSomewhere(); // would be null otherwise 

    this.setId = (id) => { 
     this.heldId = id; 
    }; 

    this.getId =() => this.heldId; 

    return this; 
}); 
0

angular-local-storage Verwenden Sie den Browser lokalen Speicher zugreifen kann:

app.factory('IdFormHolder', function(localStorageService) { 
    return { 
     setId: function(data) { 
      return localStorageService.set('loggedUserData', data); 
     }, 
     getId: function() { 
      return localStorageService.get('loggedUserData'); 
     } 
    }; 
});