我使用Angular.js做了一个单页常规应用程序,用户登录后,如果在浏览器中刷新,登录信息消失,登录状态被重置,我必须重新登录,我怎样才能保留登录状态事件在浏览器中进行刷新?
谢谢你的帮助
您可以使用 AngularJS 服务$cookieStore。
但在 AngularJS 1.0.7 中,您无法设置路径或 cookie 持续时间,您需要实现自己的服务。
一些额外的提示:
-对于 AngularJS 1.0.7-你需要从这里下载库
- 你需要在你的控制器/服务中注入服务 $cookieStore
-您应该创建一个检查/设置/删除会话cookie的全局服务
关于使用服务的一些起点示例:
app.service('global', function($cookieStore, $location, $filter) {
var globalService = {};
globalService.user = null;
globalService.isAuth = function (){
if (globalService.user == null) {
globalService.user = $cookieStore.get('user');
}
return (globalService.user != null);
};
globalService.setUser = function(newUser) {
globalService.user = newUser;
if (globalService.user == null) $cookieStore.remove('user');
else $cookieStore.put('user', globalService.user);
};
globalService.getUser = function() {
return globalService.user;
};
return globalService;
});
登录后调用 setUser 将用户(可能是服务器返回的某些令牌)保存在 cookie 中。然后,您应该为每个需要登录用户的请求发送身份验证令牌数据。
令牌可以是 PHP 会话(如果使用 PHP)并且会话可以在服务器上恢复。