在angularjs

时间:2015-05-20 19:49:10

标签: javascript angularjs

我使用了内置身份验证的mean.js样板。但是,我在使用样板验证服务时遇到了问题。

这是服务:

'use strict';

// Authentication service for user variables
angular.module('users').factory('Authentication', [


    function() {
        var _this = this;
        var _user_exists = {};

        _this._data = {
            user: window.user
        };
        return _this;
    }
]);

现在,在我登录时的身份验证控制器中,我有以下代码段:

$http.post('/auth/signin', $scope.credentials).success(function(response) {
                // If successful we assign the response to the global user model
                $scope.authentication.user = response;

这很棒 - 因为现在$ scope.authentication中有一个包含用户数据的用户对象。然后,它会自定义具有自定义导航栏的标题视图(使用来自$ scope.authentication.user的用户数据)。

但是,我使用HTML5,每次刷新页面时,似乎用户对象都被覆盖并变空 - 这似乎是用户已经注销(在导航栏上)。

但是如果我'console.log($scope.authentication._data.user);'

,我仍然可以看到所有用户数据

任何想法都将不胜感激

2 个答案:

答案 0 :(得分:1)

要详细说明,我的评论,您需要在浏览器中保留持续日期。

使用localStorage或Cookies可以轻松执行此操作。 (ngCookies或ngStorage)

用户通过身份验证后,将数据存储到适当的持久存储中。

当用户启动您的应用程序(.run())或控制器开始时,如果用户已经过身份验证,请检查您的持久存储以检索用户信息。

答案 1 :(得分:0)

我写了一个非常有用的对象,用于在本地存储中存储数据:

var LocalStorageManager = {
    setValue: function(key, value) {
        window.localStorage.setItem(key, JSON.stringify(value));
    },
    getValue: function(key) {
        try {
            return JSON.parse(window.localStorage.getItem(key));
        } catch (e) {

        }
    }
};

存储数据:

LocalStorageManager.setValue("key",data);

要检索数据:

LocalStorageManager.getValue("key");