Javascript 单页应用程序存储用户数据

Javascript 单页应用程序存储用户数据,javascript,angularjs,api,browser,single-page-application,Javascript,Angularjs,Api,Browser,Single Page Application,我正在用angularjs开发一个单页应用程序。我正在制作一个简单的登录表单,以获取用户数据并在会话期间使用它。但是,如果客户端刷新页面,用户信息将被删除,用户将再次路由到登录页面 我无法使用cookie,因为用户验证操作是由rest服务完成的 会话期间如何在浏览器上存储用户数据。应在浏览器关闭时删除用户数据 <script> var app = angular.module("MyApp", ["ui.router"]); app.fact

我正在用angularjs开发一个单页应用程序。我正在制作一个简单的登录表单,以获取用户数据并在会话期间使用它。但是,如果客户端刷新页面,用户信息将被删除,用户将再次路由到登录页面

我无法使用cookie,因为用户验证操作是由rest服务完成的

会话期间如何在浏览器上存储用户数据。应在浏览器关闭时删除用户数据

    <script>
        var app = angular.module("MyApp", ["ui.router"]);

        app.factory("AuthService", ["$rootScope",function($rootScope){

            return {
                setUserCredentials: function(user){

                    $rootScope.user = { isAuthenticated: true, username: user.username };
                    $rootScope.$emit('handleLogin', { user: user });
                },
                removeUserCreadentials: function(){
                    $rootScope.user = undefined;                            
                },
                isAuthenticated: function(){
                    return $rootScope.user != null;
                },
                getUser: function(){
                    return $rootScope.user;
                }
            }
        }]);

        app.run(function($rootScope, $state, AuthService){
                $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){
                    if(toState.authenticate && !AuthService.isAuthenticated()){
                        $state.transitionTo("login");
                        event.preventDefault(); 
                    }
                });
                $rootScope.$on("handleLogin",function(e, args){
                    console.log(e);
                    console.log(args);
                    $state.transitionTo("home");
                });
                $rootScope.$on("handleLogout",function(e, args){
                    console.log(e);
                    console.log(args);
                });
        });

        app.config(function($stateProvider, $urlRouterProvider){
            $urlRouterProvider.otherwise('/home');
            $stateProvider.
                state('home',{
                    url: '/home',
                    templateUrl: 'templates/home.html',
                    authenticate: true
                }).
                state('login',{
                    url: '/login',
                    templateUrl: 'templates/login.html',
                    controller: 'LoginController',
                    authenticate: false
                });

            $urlRouterProvider.otherwise("/login");
        });

        app.controller('LoginController', ["$scope", "AuthService", function($scope, AuthService){
            $scope.login = function(){
                if($scope.username == "myuser" && $scope.password == "123456"){
                    AuthService.setUserCredentials({ "username": "myuser" });
                }
            }
        }]);

        app.controller('HomeController', function($scope, $stateParams){

        })

    </script>

var-app=angular.module(“MyApp”[“ui.router”]);
app.factory(“AuthService”,[“$rootScope”,函数($rootScope){
返回{
setUserCredentials:函数(用户){
$rootScope.user={isAuthenticated:true,username:user.username};
$rootScope.$emit('handleLogin',{user:user});
},
removeUserCreadentials:function(){
$rootScope.user=未定义;
},
isAuthenticated:函数(){
返回$rootScope.user!=null;
},
getUser:function(){
返回$rootScope.user;
}
}
}]);
运行(函数($rootScope、$state、AuthService){
$rootScope.$on(“$stateChangeStart”),函数(事件、toState、toParams、fromState、fromParams){
if(toState.authenticate&&!AuthService.isAuthenticated()){
$state.transitiono(“登录”);
event.preventDefault();
}
});
$rootScope.$on(“handleLogin”,函数(e,args){
控制台日志(e);
console.log(args);
$state.transitiono(“家”);
});
$rootScope.$on(“handleLogout”,函数(e,args){
控制台日志(e);
console.log(args);
});
});
app.config(函数($stateProvider,$urlRouterProvider){
$urlRouterProvider。否则('/home');
$stateProvider。
州(“家”{
url:“/home”,
templateUrl:'templates/home.html',
验证:true
}).
状态('登录'{
url:“/login”,
templateUrl:'templates/login.html',
控制器:“登录控制器”,
验证:false
});
$urlRouterProvider。否则(“/login”);
});
app.controller('LoginController',[“$scope”,“AuthService”,function($scope,AuthService){
$scope.login=函数(){
如果($scope.username==“myuser”&&$scope.password==“123456”){
setUserCredentials({“用户名”:“myuser”});
}
}
}]);
app.controller('HomeController',函数($scope,$stateparms){
})
您可以在html5中使用new