如何在AngularJS中维护会话

时间:2014-12-07 17:01:51

标签: javascript jquery angularjs session angularjs-scope

我正在探索AngularJs,并且我需要维护用户会话,如果登录然后将其重定向到主页,则保持用户登录页面。

我为此目的发现的两种技术是使用web browser local storage or session storage

我的网络应用程序是基于用户的,因此如果用户关闭浏览器,则必须终止其会话。因此,下次打开浏览器时,它必须唱歌。

使用localstorage无法实现这一点,因为它可以在下次使用。

目前,我正在使用sessionstorage,但问题是如果新标签中的标签关闭或用户打开navigation,则当前会话无法使用。

那么我如何维护用户的会话,除非它关闭浏览器。

我的实施如下:

app.controller('loginCtrl', ['$scope', '$rootScope', '$location', function ($scope, $rootScope, $location) {
    if (typeof (Storage) !== "undefined") {
        if (sessionStorage.storedInfo) {
            $rootScope.loginUser = JSON.parse(sessionStorage.storedInfo);
        } else {
            sessionStorage.setItem('storedInfo', JSON.stringify($rootScope.loginUser));
        }

    } else {
        alert("Sorry, your browser does not support web storage...");
    }

    if ($rootScope.loginUser.loginTrue) {
        $location.path('/home');
    }
    else {


        $scope.logObj = {
            Username: 'hass',
            Password: '',
            session: $rootScope.session,
            loginUser: $rootScope.loginUser

        };

        $scope.submitForm = function () {
            if ($scope.logObj.Username == 'hassaan' && $scope.logObj.Password == 'hassaan') {
                $rootScope.loginUser.username = $scope.logObj.Username;
                $rootScope.loginUser.password = $scope.logObj.Password;
                $rootScope.loginUser.loginDateTime = new Date();
                $rootScope.loginUser.loginTrue = true;
                sessionStorage.setItem('storedInfo', JSON.stringify($rootScope.loginUser));
                $location.path('/home');
            }
        }

    }

}])

解决问题的任何指导?

0 个答案:

没有答案