我使用了内置身份验证的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);'
任何想法都将不胜感激
答案 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");