重新打开浏览器后丢失会话存储数据

时间:2016-05-28 06:31:09

标签: angularjs html5 session

执行会话后在浏览器中创建的会话。我关闭并打开会话将清除的同一浏览器。

$scope.logIn = function () {        
        $http(
            {
                method: 'post',
                url: 'Service.asmx/fn_CheckLogin',
                data: $.param({ strMob: $scope.login.mob, strPwd: $scope.login.pwd }),
                dataType: 'json',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
            }).success(function (data, status, headers, config) {                               
                    sessionStorage.user = data[0].UserName;                
                    sessionStorage.loggedIn = true;                                
            }).error(function (data, status, headers, config) {
                sessionStorage.user = '';                  
                    sessionStorage.loggedIn = false;    

            });
    };

2 个答案:

答案 0 :(得分:0)

使用$ localStorage。 这是链接:https://github.com/gsklee/ngStorage

答案 1 :(得分:0)

回答OP添加的评论。

是的,可以在角度控制器中的文档就绪上执行代码。

在基础(主)控制器中追加以下事件:

angular.element(document).ready(function () {
   // code you need to execute on document ready
});

会话存储:

  

页面会话结束时,会在sessionStorage中存储的数据被清除。只要浏览器处于打开状态,页面会话就会持续,并且会在页面重新加载和恢复后继续存在。 在新标签页或新窗口中打开页面会导致启动新会话,这与会话Cookie的工作方式不同。

MDN reference

编辑(回答Op对此答案的评论):

要在用户关闭浏览器后维护信息,您需要使用localStorage

谷歌它,它与sessionStorage的使用类似,很容易理解。找到这个codepen来帮助你。仍然阅读它,然后才使用它。

此外,如果您愿意讨论,我建议您只在localStorage中存储用户名而不是像logedIn这样的标志,而是在服务器上保存此信息。然后,每当用户关闭一个系统上的浏览器并从其他系统登录并注销时。他将从他使用过的所有系统中退出。这是大多数Web应用程序的可接受行为。