簡體   English   中英

如何使用angularJS存儲登錄信息

[英]how to store login info with angularJS

我目前正在使用angularJS開發一個小應用程序; 用戶必須先登錄表單,然后才能單擊一些鏈接,這些鏈接顯示從服務器獲取的數據。

登錄表單僅接受用戶輸入,然后“存儲”到工廠

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

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

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

    return that;
});

效果很好,我需要將其保存起來,因為每次我將$ http.get作為標題時,服務器都需要發送登錄表單。

每個控制器都從工廠獲取登錄表單,並使用它從服務器獲取數據。

在有人決定刷新頁面之前,此方法工作正常,此時似乎工廠已從其登錄表單“清空”,然后Web應用程序無法顯示任何內容。

有沒有一種方法可以存儲此登錄信息,以免被輕易刪除?

安裝sessionStorage后,可以使用以下代碼:

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;
}]);

下載鏈接: https : //github.com/gsklee/ngStorage

為了保留數據,您必須使用某種本地數據庫||。 LocalStorage || SessionStorage至少。 初始化Factory時,您可以檢查並嘗試從DB / LS檢索該數據並將其保存為變量(如果存在)。

就像是

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

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

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

    return this;
});

使用angular-local-storage,您可以訪問瀏覽器的本地存儲:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM