angularjs中单页身份验证的最佳解决方案

时间:2014-07-05 15:26:15

标签: angularjs authentication angular-ui-router

我在互联网上尝试了很多解决方案,但没有成功。

            var myDataPromise = loginService.getData();
            myDataPromise.then(function(data) {  // this is only run after $http completes

                if(!isLogin) {
                    if(!data.logout) {

                    } else {
                        $location.url("pages/signin");
                    }
                } else {
                    if(data.logout) {
                        $location.url("pages/signin");
                    } else {

                    }
                }
            });

loginService返回用户状态,无论他是否被授权,此服务使用$ http ajax get请求来获取数据。 我想要的是检查每条路线的用户状态,如果他没有显示所请求的页面,则重定向到登录页面。 就我而言,存在一个问题。如果我在退出后单击浏览器后退按钮,它会显示上一页一段时间,然后重定向到登录页面加上如果用户在会话到期后请求页面浏览器显示所请求的页面一段时间,然后直接登录页面。这个问题的最佳解决方案是什么?谢谢。

1 个答案:

答案 0 :(得分:1)

如果您需要检查每个州,可以向$stateChangeStart

添加一个事件监听器
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
    event.preventDefault();
    loginService.getData().then(
        function() {
            $state.go(toState, toParams);
        },
        function() {
            $state.go('login');
        });
})