如果已经以角度js登录,如何避免登录

时间:2016-11-19 19:56:07

标签: angularjs

在我的应用程序中,我维护URL以分隔客户,如

myapp.localhost.com /#/ customer1表 myapp.localhost.com /#/的customer2

现在说customer1已登录。然后在同一浏览器中,但在其他标签中,customer2正在输入他的网址。在这一点上,我想避免customer2登录,当他点击url时,我想再次登录customer1 url。

我使用了以下代码。

    .factory('authService', function ($rootScope, $state, $auth, $location,     $stateParams) {
    return {
        isLoggedin: function () {
            console.log($auth.isAuthenticated());
            if (!$auth.isAuthenticated()) {
                if($rootScope.currentUser.accessLevel == '1')
                {
                    $rootScope.currentUser = null;
                    $location.path('/admin');
                }
                else
                {
                    $rootScope.currentUser = null;
                    //$state.go('customer',{'customerTag' : localStorage.getItem('customerTag')});
                    $location.path("/"+localStorage.getItem('customerTag'));
                }
                return true;
            }
        }
    };
})


 .run(function($rootScope, $state, $stateParams, $location, $auth) {
    $rootScope.$state = $state;
    $rootScope.$on('$stateChangeStart', function(event, toState) {
    });
    });

请建议解决方案

1 个答案:

答案 0 :(得分:1)

您可以在路由器配置中添加“解析”密钥,确保将已登录的用户重定向到管理面板或任何其他位置。像这样:

$stateProvider.state('login', {
        url: '/login',
        templateUrl: '/templates/login.html',
        controller: 'LoginController',
        resolve: {
            canLogin : ['$q', 'authService', function ($q, authService) {
                var deferred = $q.defer();

                if (authService.isLoggedin()) {
                    // redirect user to admin panel or any other place
                    $location.path('/admin');
                    // location.path("/"+localStorage.getItem('customerTag'))


                    deferred.reject();
                }
                else {
                    deferred.resolve();
                }

                return deferred.promise;
            }]
        }
    })

提示:避免在isLoggedin等方法中更改存储空间。 Probaly可以根据此方法的返回更新存储。