作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 AngularJS 应用程序中使用 Hello.js 让用户通过 Facebook 进行身份验证。用户登录后,我从 Facebook 获取用户信息,我使用 json 并从我自己的数据库中获取用户对象并将其存储在根范围内,以便我网站的各个区域都可以访问用户的个人资料信息(例如在我显示登录用户名的标题中)。
这是处理身份验证内容的服务
angular.module('myApp')
.factory('userService', function($rootScope, $location) {
// Hello.js Functions
hello.init({
facebook : '1234567891234545'
});
var service = {
isLoggedIn: function() {
return $rootScope.loggedInUser != null;
},
login: function() {
hello('facebook').login( function() {
hello('facebook').api('/me').success(function(json) {
$rootScope.loggedInUser = getUserFromMyOwnAPI(json.id);
$rootScope.$apply(function() {
$location.path('/');
});
});
});
},
logout: function() {
hello('facebook').logout( function() {
$rootScope.loggedInUser = null;
$location.path('/');
});
},
loggedInUser: function(){
return $rootScope.loggedInUser;
}
}
return service;
})
我遇到的问题是每次刷新页面时,我都会丢失个人资料信息。这是有道理的,因为存储用户数据的 $rootScope.loggedInUser(基于我从 Facebook 返回的 json)将在页面刷新后重置。
我该如何处理?我应该将用户数据放在 localStorage 而不是 rootScope 中吗?或者每次我想引用用户的个人资料信息时,我是否应该以某种方式利用 hello('facebook').api('/me') ?
我注意到 hello.js 已经在 localStorage 中存储了一些东西:
key: hello
{"facebook":{"state":"","access_token":"blahblahblah","expires_in":6776,"https":"1","client_id":"12345","network":"facebook","display":"none","redirect_uri":"http://adodson.com/hello.js/redirect.html","scope":"basic","expires":1412632794.806}}
所以我想知道我是否会通过将用户对象添加到 localStorage 来重复工作。
最佳答案
这个问题的答案是主观的,可以用不同的方式争论。但是,根据您的问题和评论,我认为在本地存储中保留(非敏感)用户个人资料信息是提供不间断用户体验的好选择。
关于javascript - 每次页面刷新后用户个人资料信息都会重置(使用 Hello.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224291/
我是一名优秀的程序员,十分优秀!