我正在探索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');
}
}
}
}])
解决问题的任何指导?