【问题标题】:best solution for single page authentication in angularjsangularjs中单页身份验证的最佳解决方案
【发布时间】:2014-07-24 11:02:02
【问题描述】:

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

            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 请求来获取数据。 我想要的是检查每条路线的用户状态,如果他没有显示请求的页面而没有登录,则重定向到登录页面。 就我而言,有一个问题。如果我在注销后单击浏览器后退按钮,它会显示前一页一段时间,然后重定向到登录页面,如果用户在会话过期后请求页面,浏览器会显示请求的页面一段时间,然后定向到登录页面。这个问题的最佳解决方案是什么?谢谢。

【问题讨论】:

标签: angularjs authentication angular-ui-router


【解决方案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');
        });
})

【讨论】:

    猜你喜欢
    • 2010-09-06
    • 2015-03-18
    • 2016-09-23
    • 1970-01-01
    • 2010-12-04
    • 2013-01-30
    • 2017-04-06
    • 2015-11-21
    • 1970-01-01
    相关资源
    最近更新 更多